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

use*_*273 2 sql t-sql sql-server sql-server-2005

我有这张桌子

Column1  Column2
1        value1
2        value2
3        value3
4        value4
Run Code Online (Sandbox Code Playgroud)

使用此声明:

SELECT * FROM table WHERE column2='value2'
Run Code Online (Sandbox Code Playgroud)

只显示:

Column1  Column2
2        value2
Run Code Online (Sandbox Code Playgroud)

我想显示这个:

Column1  Column2
1
2        value2
3
4  
Run Code Online (Sandbox Code Playgroud)

怎么样?

Aar*_*and 5

好吧,你的WHERE条款是说"向我显示行所在的位置column2 = value2" - 所以,正如所写的那样,它不可能包含任何column2具有任何其他值的行,因为它们已被过滤掉.

这是使用CASE表达式(并且没有WHERE子句)完成所需内容的一种方法:

SELECT column1, column2 = CASE 
  WHEN column2 = 'value2' THEN 'value2'
  ELSE NULL
END
FROM dbo.table;
Run Code Online (Sandbox Code Playgroud)