是否有办法在AS400 DB2 SQL中执行类似“表中的值时大小写”的操作?

问题描述 投票:0回答:2

寻找类似的方法

with T(A) as (values (1), (2), (439), (438), (13000023) ),
    TT(B) as (values (2), (438))
select
    A,
    (CASE 
        WHEN (A IN (select B from tt) ) THEN 0
        ELSE A 
        END) AS CODE 
    from T

(有关信息,以上操作无效,并且出现错误:[SQL0115]比较器输入错误。SQLState:42601错误代码:-115

欢迎任何建议。谢谢

sql db2 ibm-midrange
2个回答
0
投票

这应该起作用:

select A,
      (CASE WHEN A IN (select B from tt) THEN 0
            ELSE A 
        END) AS CODE 
from T

IN之后的别名不适当。


0
投票

我认为左联接将在这里为您提供帮助:

with T(A) as (values (1), (2), (439), (438), (13000023) ),
    TT(B) as (values (2), (438))
select case
       when B is NULL then A
       else 0
       end
from T
left join TT
    on A = B;

请注意,如果键不是唯一的,则可能必须修改它。

© www.soinside.com 2019 - 2024. All rights reserved.