我試着刪除那些在列「toevoeging」如何刪除在一個特定列中具有NOT NULL的所有行?
值我做了這個查詢的所有行:
DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;
這是爲什麼不可能? 所以我想保留具有NULL的行 謝謝!
我試着刪除那些在列「toevoeging」如何刪除在一個特定列中具有NOT NULL的所有行?
值我做了這個查詢的所有行:
DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;
這是爲什麼不可能? 所以我想保留具有NULL的行 謝謝!
您需要使用IS NOT NULL
而不是toevoeging = NOT NULL
:
DELETE
FROM gebruiksoppervlakte
WHERE toevoeging IS NOT NULL;
NULL
的東西,缺少的值。因此,使用IS NULL
或IS 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
當使用WHERE子句來定位有一個NULL值的行,從來沒有使用「= NULL」比較,而不是總是使用IS NULL或IS NOT NULL比較運算符。
所以正確的查詢是:
DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL;
由於空值不能比擬的,下面的作品完全一樣... WHERE toevoeging IS NOT NULL
:
DELETE FROM gebruiksoppervlakte
WHERE toevoeging = toevoeging
;
'IS NOT NULL',而不是'= NOT NULL'。 –
另請參見[不等於<=!=運算符在NULL上的T-SQL](http://stackoverflow.com/questions/5658457/not-equal-operator-in-t-sql-on-null) – LittleBobbyTables
NULL '不是可以與其他值直接進行比較的值。它有自己的邏輯。例如,'NULL'本身不**等於'NULL'。請參閱http://www.sqlservercentral.com/blogs/steve_jones/2010/10/13/common-sql-server-mistakes-_1320_-equals-null/ –