2013-09-11 74 views
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也有類似的結果。

+2

我想說你的第一個問題是使用'TEXT'類型。這是一個CLOB類型。切換到'VARCHAR',你的問題可能會消失 – Phil

+3

另外,我在這個演示中看不到相同的結果 - http://sqlfiddle.com/#!2/cd9de/3 – Phil

+1

仔細檢查你的數據。問題在那裏。 – peterm

回答

0

您的列字符集可能不是您所期望的。 MySQL安裝頻繁地默認爲ISO8859-1之外的其他東西。