选择带有“case”的变量表达
我试图用 select 语句中的 case 结果分配一个变量。 我尝试了不同的方法:
DO $$
BEGIN
declare truefalse varchar(100);
SELECT truefalse = CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
然后
DO $$
BEGIN
declare truefalse varchar(100);
SELECT CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
还使用其他“case”语法:case when x=y then z else r end。 到目前为止没有运气 - 我收到错误消息: 类型“truefalse”不存在。 任何人都可以阐明我的错误吗?
I'm trying to assign a variable with the result of a case within a select statement.
I've tried different approaches:
DO $
BEGIN
declare truefalse varchar(100);
SELECT truefalse = CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$
and then
DO $
BEGIN
declare truefalse varchar(100);
SELECT CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$
and also with the other "case" syntax: case when x=y then z else r end.
No luck so far - I get error message:
type "truefalse" does not exist.
Can anyone shed light on my error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如手册中所述,
declare
部分在开始之前。如果您这样做,您的第二个 PL/pgSQL 块将起作用。但为什么不使用适当的布尔值呢?
如果
cfgvalue
始终存储字符串'TRUE'
和'FALSE'
,您甚至可以直接转换它:As documented in the manual, the
declare
section goes before the begin. If you do that, your the second PL/pgSQL block will work.But why not use a proper boolean value?
If the
cfgvalue
always stores the strings'TRUE'
and'FALSE'
you can even cast it directly: