如何编写只返回某列的值为空的行的SELECT语句?
答案 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