2010-07-30 66 views
29

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

+6

请你的问题更清楚一点,这几乎是不可能的,以确定你在做什么在这里寻求.. – Rob 2010-07-30 06:09:38

+1

您的问题中的信息非常不充分。您需要向我们展示您的数据库表格和列,并更清楚地表明您真正想实现的目标。 – 2014-03-20 08:59:01

回答

47

你的意思是这样的:

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

2

使用Is Null

select * from tblName where clmnName is null  
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。

+1

+1我从来不知道ISNULL()函数。 – WDuffy 2010-07-30 08:08:09

2

你想知道如果你想查询一些不等于什么值的列空

select * from foo where bar is null 

和列也包含空值,你不会得到与空列在它

不起作用:

select * from foo where bar <> 'value' 

做工作:

select * from foo where bar <> 'value' or bar is null 

在甲骨文(不知道其他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',那么声明往往变成越界。

0

因为某些原因IS NULL可能无法在某些列数据类型 我是个需要得到所有他们的英文全称是缺少员工的工作,我用:

**选择emp_id,Full_Name_Ar ,Full_Name_En从员工那里Full_Name_En =“”或Full_Name_En是空**

+0

这只是寻找记录,其中Full_Name_En是一个空格...在这个问题不是很有帮助处理NULL – sonyisda1 2016-09-09 20:48:19

0
select Column from Table where Column is null; 
+0

欢迎来到SO。 仅有代码的答案不如具有工作代码和有用解释的答案有帮助。 在这种情况下,对于5岁的孩子解释这个答案是值得的。 – 2015-11-05 05:49:43

0

SELECT * FROM表名,其中列名是空