存在时的DB2案例

wvyml7n5  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(155)

搜索一个表,看看它是否包含X,如果它没有找到X,我需要它返回Y。这是我到目前为止所尝试的:

SELECT WHEN T1.X IS NULL THEN Y ELSE T1.X END AS XY 
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.X = T2.X
WHERE T1.X IN (A, B, C);

SELECT CASE WHEN T1.X IS NOT NULL THEN T1.X ELSE Y END AS XY
FROM TABLE1 T1
WHERE T1.X IN (A, B, C)
AND T1.X IN (
    SELECT T2.X
    FROM TABLE2 T2);

SELECT CASE WHEN EXISTS (SELECT X FROM TABLE1) THEN X ELSE Y END AS XY
FROM TABLE1 
WHERE X IN (A, B, C);

如果没有找到A、B或C,则返回0行,而不是Y。但如果找到了A、B或C,则确实正确地返回X。

6za6bjd0

6za6bjd01#

简单UNION

SELECT X FROM TABLE1 WHERE X IN (A, B, C) 
UNION 
SELECT Y FROM SYSIBM.SYSDUMMY1 
WHERE NOT EXISTS (SELECT X FROM TABLE1 WHERE X IN (A, B, C))
7tofc5zh

7tofc5zh2#

我发现DB2可以使用以下代码:

SELECT A, B, 
Case C
WHEN 'Citron' THEN 'Lemon'
WHEN 'Charlie' THEN 'Name'
end as Choice, 
D
FROM TABLE with UR;

也可以与DB2 java驱动程序一起使用。

bqjvbblv

bqjvbblv3#

这在DB2中用作记录存在性测试

SELECT
  CASE COUNT(*)
    WHEN 0 THEN 'FALSE'
    ELSE 'TRUE'
  END as IsRecordThere
FROM MYTABLE 
WHERE COL1 = 'whatever' AND COL2 = 'etc'

相关问题