选择column为null的行

时间:2010-07-30 06:08:11

标签: sql

如何编写只返回某列的值为空的行的SELECT语句?

7 个答案:

答案 0 :(得分:53)

你的意思是:

SELECT COLUMN1, COLUMN2 FROM MY_TABLE WHERE COLUMN1 = 'Value' OR COLUMN1 IS NULL

答案 1 :(得分:8)

我不确定这是否回答了您的问题,但是使用IS NULL构造,您可以测试任何给定的标量表达式是否为NULL:

SELECT * FROM customers WHERE first_name IS NULL

在MS SQL Server上,如果ISNULL()函数不为NULL,则返回第一个参数,否则返回第二个参数。您可以有效地使用它来确保查询总是产生一个值而不是NULL,例如:

SELECT ISNULL(column1, 'No value found') FROM mytable WHERE column2 = 23

其他DBMS具有类似的功能。

如果你想知道列是否是空的(即,被定义为可空),而不查询实际数据,你应该查看information_schema。

答案 2 :(得分:3)

使用Is Null

select * from tblName where clmnName is null    

答案 3 :(得分:2)

您想知道列是否为空

select * from foo where bar is null

如果你想检查一些不等于某个值的值,并且该列也包含空值,你就不会得到带有null的列

不起作用:

select * from foo where bar <> 'value'

确实有效:

select * from foo where bar <> 'value' or bar is null
在Oracle中(不知道在其他DBMS上)有些人使用这个

select * from foo where NVL(bar,'n/a') <> 'value'

如果我正确地读取了tdammers的答案,那么在MS SQL Server中就是这样的

select * from foo where ISNULL(bar,'n/a') <> 'value'

在我看来这是一个黑客攻击,如果变量包含'n / a',那么'value'变成一个变量,声明会变成bug。

答案 4 :(得分:0)

由于某些原因,IS NULL可能无法用于某些列数据类型 我需要让所有员工忘记他们的英文全名,我用过:

**来自员工的SELECT emp_id,Full_Name_Ar,Full_Name_En,其中Full_Name_En =''或Full_Name_En为空**

答案 5 :(得分:0)

select Column from Table where Column is null;

答案 6 :(得分:0)

从tableName中选择*,其中columnName为null