2013-03-29 58 views
0

我試着刪除那些在列「toevoeging」如何刪除在一個特定列中具有NOT NULL的所有行?

值我做了這個查詢的所有行:

DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL; 

這是爲什麼不可能? 所以我想保留具有NULL的行 謝謝!

+6

'IS NOT NULL',而不是'= NOT NULL'。 –

+0

另請參見[不等於<=!=運算符在NULL上的T-SQL](http://stackoverflow.com/questions/5658457/not-equal-operator-in-t-sql-on-null) – LittleBobbyTables

+0

NULL '不是可以與其他值直接進行比較的值。它有自己的邏輯。例如,'NULL'本身不**等於'NULL'。請參閱http://www.sqlservercentral.com/blogs/steve_jones/2010/10/13/common-sql-server-mistakes-_1320_-equals-null/ –

回答

4

您需要使用IS NOT NULL而不是toevoeging = NOT NULL

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NOT NULL; 

NULL的東西,缺少的值。因此,使用IS NULLIS NOT NULL表示您的專欄缺乏價值或缺乏價值。

編輯時,這會刪除表格中toevoeging列中有值的所有內容。如果您想要刪除空字符串,則您需要使用:

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging = ''; 

請參閱Demo

如果你想刪除與null值的行,那麼你將使用:

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NULL; 

Demo

編輯#2,根據我們的談話聊天你想刪除所有行有一個值,但該值不是空字符串。然後,其餘行需要更新到列中的null。因此,你需要同時使用刪除和更新:

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NOT NULL 
    and toevoeging <> ''; 


update gebruiksoppervlakte 
set toevoeging = null; 

Demo

+0

當我這樣做時,我的整個桌子都變空了。但不是所有的單元格都被填充。 – warnerst

+0

@warnerst這將刪除所有的行不等於空的行,所以如果你在每一行都有一個值,那麼它將刪除所有內容。你想要刪除什麼?空單元格是空字符串還是空字符串? – Taryn

+0

哦,他們在空的地方,但不是'NULL'。所以我認爲它現在應該工作 – warnerst

0

當使用WHERE子句來定位有一個NULL值的行,從來沒有使用「= NULL」比較,而不是總是使用IS NULL或IS NOT NULL比較運算符。

所以正確的查詢是:

DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL; 
0

由於空值不能比擬的,下面的作品完全一樣... WHERE toevoeging IS NOT NULL

DELETE FROM gebruiksoppervlakte 
WHERE toevoeging = toevoeging 
    ; 
相關問題