4
我是MySQL新手,但在Intranet開發中使用Access多年。最近開始使用MySQL數據庫並將我的頭髮拉出來。 LIKE命令對存在的記錄給出不穩定的結果或沒有結果。在MySQL中使用LIKE命令給出奇怪的結果
一個名爲「客戶」的表,其中包含名爲「BusinessName」的列。一個記錄是例如「FRED SMITH CONSTRUCTIONS」。
Select * from Clients where BusinessName LIKE '%FRED%' -- returns true.
Select * from Clients where BusinessName LIKE '%FRED SMITH%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%SMITH%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%S%' -- returns true.
Select * from Clients where BusinessName LIKE '%FRED%SM%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%S%C%' -- returns true.
它非常不穩定,對我毫無意義。任何超過1個單詞和它的接縫混淆。它就像%通配符在單詞之間不起作用,或者第二個單詞中有多個字符。
爲了讓我擺脫麻煩,我正在單獨搜索每個單詞,但是這顯示了太多結果。例如
Select * from Clients where BusinessName LIKE '%FRED%' or BusinessName LIKE '%SMITH%'
返回true。
有什麼建議嗎?列類型是文本。試過RLIKE
也有類似的結果。
我想說你的第一個問題是使用'TEXT'類型。這是一個CLOB類型。切換到'VARCHAR',你的問題可能會消失 – Phil
另外,我在這個演示中看不到相同的結果 - http://sqlfiddle.com/#!2/cd9de/3 – Phil
仔細檢查你的數據。問題在那裏。 – peterm