2011-07-08 39 views
2

我有一個有2796個條目的mysql表。我想選擇在註釋字段中某處不包含單詞SUPPR的條目。mysql的否定之類不會返回什麼預期,爲什麼?

如果我做了以下

SELECT * FROM `catalogues` WHERE notes LIKE "%SUPPR%" 

它返回266行。但是,如果我寫的是什麼,我認爲補

SELECT * FROM `catalogues` WHERE notes not LIKE "%SUPPR%" 

返回762行的時候,我期待2530(2796-266)。

我該如何編寫第二個請求以獲得我需要的內容?

+0

Notes字段中是否有空值? – Bill

回答

6

當您使用NOT LIKE時,空值被隱式排除。
您分別處理:

SELECT * 
    FROM `catalogues` 
WHERE (notes NOT LIKE "%SUPPR%" 
     OR notes IS NULL); 

也許這是隻爲你使用它說明目的...
數據庫管理員和性能愛好者建議不要使用SELECT *

+0

很好,謝謝,我找不到我做錯了什麼 – kaklon

相關問題