2012-05-18 57 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,'')))='';