我对CASE声明有疑问。我的案例陈述如下:
CASE myField1
WHEN 1 THEN 'Jump'
WHEN 2 THEN 'Sleep'
WHEN 3 THEN 'Eat'
WHEN 4 THEN 'Run'
WHEN 5 THEN 'Break'
WHEN 6 THEN 'Move'
WHEN 7 THEN 'Stop'
ELSE NULL END AS TestColumn,
在此声明中,我必须根据其他字段的值添加一个初始值。所以在每个WHEN选项的末尾,如果myField2等于1,可能会有一个字母A.如果没有,那么我就不会把字母A.输出应该是这样的:
Jump A
Sleep
Eat A
Run
Break
Move A
Stop
如何检查SQL CASE中的第二个字段并将现有单词的值连接起来?如果有人可以提供帮助,请告诉我。谢谢!
答案 0 :(得分:3)
将它们连接在一起:
SELECT (CASE myField1
WHEN 1 THEN 'Jump'
WHEN 2 THEN 'Sleep'
WHEN 3 THEN 'Eat'
WHEN 4 THEN 'Run'
WHEN 5 THEN 'Break'
WHEN 6 THEN 'Move'
WHEN 7 THEN 'Stop'
ELSE ''
END) + (CASE WHEN myField2 = 1 THEN 'A' ELSE '' END) AS TestColumn,
注意:我将ELSE NULL
更改为ELSE ''
。这允许在前一个值没有值时显示'A'
。如果+
的任一参数为NULL
,则结果为NULL
。
仔细观察,你需要一个“A”之前的空格。如果在缺少现有值时您还想要“A”,请使用LTRIM()
:
SELECT LTRIM((CASE myField1
WHEN 1 THEN 'Jump'
WHEN 2 THEN 'Sleep'
WHEN 3 THEN 'Eat'
WHEN 4 THEN 'Run'
WHEN 5 THEN 'Break'
WHEN 6 THEN 'Move'
WHEN 7 THEN 'Stop'
ELSE ''
END) +
(CASE WHEN myField2 = 1 THEN ' A' ELSE '' END)
) AS TestColumn,