2010-07-30 63 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表名,其中列名是空