如何在未满足条件时显示NULL

时间:2013-01-27 04:01:03

标签: sql sql-server tsql sql-server-2005

我有这张桌子

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  

如何?

2 个答案:

答案 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为{value1value3value4时显示NULL(这与“当column2为{{1}时如何显示NULL”不同}),你可以使用:

value2

第二个注释:Dear NULL