2014-10-09 63 views
0

我已經在我的數據庫表中進行新列:不等於運算符=無法正常運行在Oracle中

alter table TABLE add (COLUMN NUMBER(1)); 

現在我想選擇所有記錄,其中列的值不爲零,無論是它的空(NULL)的一些其他數

SELECT * FROM TABLE WHERE COLUMN != 0; 

,默認情況下,因爲這列最近增加了,所以應該返回所有記錄,但不返回任何所有列都有空/空值。

但是,如果一個記錄的此列的值更改爲0並在查詢下運行,則它工作正常。

SELECT * FROM TABLE WHERE COLUMN = 0; 

請幫助我想選擇所有記錄的值不是0

+0

第一種情況下做這樣NULL不能與相等運算符進行比較,請使用IS – 2014-10-09 12:17:56

回答

5

對於NULL值,你必須明確給出IS NULLIS NOT NULL

SELECT * FROM TABLE WHERE COLUMN <> 0 OR COLUMN IS NULL; 

OR

SELECT * FROM TABLE WHERE NVL(COLUMN,1) <> 0 

優化器是怎麼回事,即使你去NVL()

+0

您聲明「優化器將會執行類似在第一種情況下,即使你使用NVL()「。你能給出一個參考文件嗎?你讓我懷疑,但我認爲這不是真的。 – 2014-10-09 13:30:35