2017-02-06 43 views
0

我用我的MySQL數據庫這個查詢找到所有行my_column不爲空:MySQL;空場似乎不是空

SELECT * FROM my_table WHERE my_column != ""; 

不幸的是許多行獲得發EMAIL:[email protected]其中my_column是空的,沒有空間,沒有越線。

爲什麼?

+0

哪個數據類型的my_column? – denny

+0

旁註:您應該爲字符串使用標準單引號:'WHERE my_column!='''。一旦你設置了MySQL的ANSI_QUOTES模式(或者想移動到另一個DBMS),使用雙引號字符串的查詢就會失效。 –

回答

2

你還需要考慮空

SELECT * FROM my_table WHERE my_column != "" OR my_column IS NOT NULL 
+0

解決了我的問題:'UPDATE my_table SET my_column = REPLACE(my_column,'\ r','');'。 – user7128548

3

你還必須檢查NULL值

SELECT * FROM my_table WHERE my_column != "" OR my_column IS NOT NULL 
+0

解決了我的問題:'UPDATE my_table SET my_column = REPLACE(my_column,'\ r','');'。 – user7128548

1

我只好先運行此代碼:

UPDATE my_table SET my_column = REPLACE(my_column,'\r','');

0

排除空值和空值應該足夠了。如果仍然沒有工作,我的建議是使用十六進制的功能,看看是否該字段包含一些非打印字符:

select 
    my_column, 
    hex(my_column) 
from 
    my_table 
where 
    my_column is not null 
    and my_column != '' 

可能會看到一些CR LF字符(分別爲0D 0A和)。

+0

這解決了我的問題:'UPDATE my_table SET my_column = REPLACE(my_column,'\ r','');'。 – user7128548

+0

@ user7128548這意味着您的「空白」列實際上並不是空的,但包含一個或多個CR字符..使用HEX,您可以輕鬆地排除故障 – fthiella