我正在将进程从oracle迁移到postgres,并且验证解码不存在,我必须使用case来实现...然后...... else ... end。
问题在于,在进行查询时,我在语法中出现错误,但研究时,语法与我在下面显示的相同。
select case when (substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorry' else 'F' end)
from debit;
显示我的错误如下
ERROR: syntax error on or near «then»
LINE 1: ... when (substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorr...
SQL state: 42601
Character: 62
我试图在括号()中括起案例,但它仍然显示同样的错误
select debi_correlativo,
(case when (substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorry' else 'F' end))
from debit;
答案 0 :(得分:0)
最好删除删除所有不必要的括号:
case when substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorry' else 'F' end
应该有用。
如果您坚持使用无用的括号,请在它们之间添加整个 case
表达式:
(case when substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorry' else 'F' end)
或仅条件:
case when (substr(min(debit.tprp_codigo), 1, 1) = 'S') then 'sorry' else 'F' end
答案 1 :(得分:0)
有两种方法可以编写案例查询。在您的情况下,额外的括号会导致语法错误。
1:
case when substr(min(debit.tprp_codigo), 1, 1) = 'S' then 'sorry' else 'F' end
2:
case substr(min(debit.tprp_codigo), 1, 1) when 'S' then 'sorry' else 'F' end