我試圖從我的表中獲取空的「文本」字段,我用pgadmin手動清除。 最初在這些領域是'我可以查詢他們是這樣的:Postgresql,選擇空字段
SELECT mystr, mystr1 FROM mytable WHERE mystr='' or mystr1=''
但是,如果我從他們刪除文本,並留下空白細胞是不行的。
如何編寫查詢以獲得結果中的那些'和'清除單元格? 或單獨清除細胞?
我試圖從我的表中獲取空的「文本」字段,我用pgadmin手動清除。 最初在這些領域是'我可以查詢他們是這樣的:Postgresql,選擇空字段
SELECT mystr, mystr1 FROM mytable WHERE mystr='' or mystr1=''
但是,如果我從他們刪除文本,並留下空白細胞是不行的。
如何編寫查詢以獲得結果中的那些'和'清除單元格? 或單獨清除細胞?
SELECT mystr, mystr1
FROM mytable
WHERE COALESCE(mystr, '') = ''
OR COALESCE(mystr1, '') = ''
;
說明:coalesce(a,b,c, ...)
功能遍歷該列表a,b,c,...
由左到右,並在第一個非空元素停止。 a,b,c
可以是任何表達式(或常量),但必須產生相同的類型(或者可以被強制爲相同的類型)。
謝謝你的」wildplasser「,從來沒有看到這樣的表達或命令,我必須仔細檢查這個,這仍然沒有找到我的空單元格幸運的是,通過將數據複製到記事本中,我發現在那些「空」單元格中,pgadmin留下了一個空格(chr(32)),所以WHERE mystr =''給出了結果。字符串兩邊的空格? –
是的,有一個TRIM()函數,它甚至是ANSI-SQL(就像COALESCE()一樣) – wildplasser
字符串是空還是NULL? (在postgres中''''和'NULL'是不同的) – wildplasser
我不知道'空白單元格'是什麼類型的,只是用pgadmin刪除單元格的所有文本。現在我嘗試查詢WHERE mystr = NULL或mystr1 = NULL,但沒有得到結果。 –
你不能比較NULL,NULL不是一個值,它是正交的。您應該使用'WHERE mystr IS NULL'來代替。 – wildplasser