2012-05-18 56 views
16

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

我试图

DELETE FROM表WHERE edit_user = “”;

,但我得到了错误

线路1:从表,其中edit_user = “” 删除;

此外,我认为在列作为空白值可能是0000-00-00,但没有。

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

回答

44
DELETE FROM table WHERE edit_user IS NULL; 
1

我相信你的问题是你使用双引号而不是单引号检查空字符串。试着只是改变到:

DELETE FROM table WHERE edit_user='' 
2

要删除空行表

语法:

DELETE FROM table_name 
WHERE column_name IS NULL; 

例如:

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

DELETE FROM data 
WHERE pkdno IS NULL; 

答案:删除5行。 (sayso)

+0

菲尔已经提供了相同的答案。你没有添加任何新东西。 –

+0

当然这与Phil的答案相同,但我更喜欢这个答案,因为它有文档。 –

7

如果您尝试删除空格,请尝试使用=''而不是is null。因此,如果您的行包含空格,is 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,'')))='';