我有这张桌子
Column1 Column2
1 value1
2 value2
3 value3
4 value4
使用此声明:
SELECT * FROM table WHERE column2='value2'
仅显示此内容:
Column1 Column2
2 value2
我想要显示:
Column1 Column2
1
2 value2
3
4
如何?
答案 0 :(得分:5)
好吧,你的WHERE
子句说“向我展示行column2 = value2
” - 所以,如上所述,它不可能包含column2
具有任何其他值的任何行,因为他们已被过滤掉了。
这是使用CASE
表达式(并且没有WHERE
子句)来实现您所需要的一种方法:
SELECT column1, column2 = CASE
WHEN column2 = 'value2' THEN 'value2'
ELSE NULL
END
FROM dbo.table;
答案 1 :(得分:1)
注意:这个问题的正确答案是Aaron Bertrand的答案。
类似的任务可能是“如何在符合条件时显示NULL ?”。在这种情况下,解决方案是NULLIF(val1, val2)函数,如果两个值相等则显示NULL。
因此,如果要在column2为value2
时显示NULL,则可以使用:
SELECT column1, NULLIF(column2, 'value2')
FROM dbo.table;
并且,如果要在column2为{value1
,value3
,value4
时显示NULL(这与“当column2为{{1}时如何显示NULL”不同}),你可以使用:
value2
第二个注释:Dear NULL