存在时的 DB2 案例
DB2 Case When Exists
正在搜索 table 以查看它是否包含 X 如果找不到 X 我需要它 return 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);
我得到 0 行 returned,其中找不到 A、B 或 C,而不是 Y。但如果它找到 A、B 或 C,它会正确 return十、
简单联合
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))
我发现这适用于 DB2:
SELECT A, B,
Case C
WHEN 'Citron' THEN 'Lemon'
WHEN 'Charlie' THEN 'Name'
end as Choice,
D
FROM TABLE with UR;
也适用于 DB2 java 驱动程序。
这在 DB2 中用作记录存在性测试
SELECT
CASE COUNT(*)
WHEN 0 THEN 'FALSE'
ELSE 'TRUE'
END as IsRecordThere
FROM MYTABLE
WHERE COL1 = 'whatever' AND COL2 = 'etc'
正在搜索 table 以查看它是否包含 X 如果找不到 X 我需要它 return 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);
我得到 0 行 returned,其中找不到 A、B 或 C,而不是 Y。但如果它找到 A、B 或 C,它会正确 return十、
简单联合
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))
我发现这适用于 DB2:
SELECT A, B,
Case C
WHEN 'Citron' THEN 'Lemon'
WHEN 'Charlie' THEN 'Name'
end as Choice,
D
FROM TABLE with UR;
也适用于 DB2 java 驱动程序。
这在 DB2 中用作记录存在性测试
SELECT
CASE COUNT(*)
WHEN 0 THEN 'FALSE'
ELSE 'TRUE'
END as IsRecordThere
FROM MYTABLE
WHERE COL1 = 'whatever' AND COL2 = 'etc'