如何删除一个特定列中具有NOT NULL的所有行?

时间:2013-03-29 13:38:57

标签: sql

我试图删除“toevoeging”列中具有值的所有行

我提出了这个问题:

DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;

为什么这不可能? 所以我想保留有NULL的行 谢谢!

3 个答案:

答案 0 :(得分:6)

您需要使用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

答案 1 :(得分:0)

  

使用WHERE子句查找具有NULL值的行时,请不要使用“= NULL”比较,而是始终使用IS NULL或IS NOT NULL比较运算符。

所以正确的查询是:

DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL;

答案 2 :(得分:0)

由于无法比较NULL,因此以下内容与... WHERE toevoeging IS NOT NULL完全相同:

DELETE FROM gebruiksoppervlakte
WHERE toevoeging = toevoeging
   ;