29

我使用 PostgreSQL 数据库,在一张表中我有 datetime 列edit_user。有些行是空白的,我想删除这些行。

我试过

DELETE FROM table WHERE edit_user="";

但我得到了错误

第 1 行:从表中删除 edit_user="";

另外,我认为列中的空白值可能是0000-00-00,但没有。

我应该如何正确执行这个命令?

4

5 回答 5

80
DELETE FROM table WHERE edit_user IS NULL;
于 2012-05-18T14:36:30.583 回答
12

如果您尝试删除空格,请尝试使用=''而不是is null。因此,如果您的行包含空格,is null则不会捕获这些记录。空白不为空,null 也不是空白。

Dec  Hex     Binary    Char-acter Description
0    00  00000000      NUL        null

32  20  00100000      Space       space

所以我推荐:

delete  from foo_table  where bar = ''

#or 

delete  from foo_table  where bar = '' or bar is null 

#or even better , 

delete from foo_table where rtrim(ltrim(isnull(bar,'')))='';
于 2016-02-11T14:59:29.170 回答
2

我相信您的问题是您正在使用双引号而不是单引号检查空字符串。尝试更改为:

DELETE FROM table WHERE edit_user=''
于 2012-05-18T18:07:09.543 回答
2

删除表中的空行

句法:

DELETE FROM table_name 
WHERE column_name IS NULL;

例子:

表名:数据--->列名:pkdno

DELETE FROM data 
WHERE pkdno IS NULL;

答:删除了 5 行。(这样说的)

于 2012-08-31T06:36:40.260 回答
0

我有另一个解决方案,对我有用:

DELETE FROM MySchema.MyTable WHERE TheColumn IS NULL OR TRIM(TheColumn) = '';
于 2021-06-10T17:49:34.293 回答