1

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

我做了这个查询:

DELETE FROM gebruiksoppervlakte WHERE toevoeging = NOT NULL;

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

4

3 回答 3

6

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

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NOT NULL;

NULL是缺乏价值的东西。因此,使用IS NULLorIS NOT NULL意味着您的列要么缺少值,要么不缺少值。

编辑,这将删除表中列中有值的所有内容toevoeging。如果您有要删除的空字符串,那么您将要使用:

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging = '';

请参阅演示

如果要删除具有null值的行,则将使用:

DELETE 
FROM gebruiksoppervlakte 
WHERE toevoeging IS NULL;

演示

编辑#2,根据我们在聊天中的对话,您试图删除所有有值但该值不是空字符串的行。然后剩余的行需要更新到null列中。因此,您需要同时使用删除和更新:

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


update gebruiksoppervlakte
set toevoeging = null;

演示

于 2013-03-29T13:40:34.297 回答
0

使用 WHERE 子句定位具有 NULL 值的行时,切勿使用“= NULL”比较,而始终使用 IS NULL 或 IS NOT NULL 比较运算符。

所以正确的查询是:

DELETE FROM gebruiksoppervlakte WHERE toevoeging IS NOT NULL;
于 2013-03-29T13:42:14.713 回答
0

因为 NULL 不能比较,所以下面的工作与 完全相同... WHERE toevoeging IS NOT NULL

DELETE FROM gebruiksoppervlakte
WHERE toevoeging = toevoeging
   ;
于 2013-05-09T16:31:44.360 回答