Basicly我在我的表中的一行,具有如下格式爲它的價值 - 1,2,3,4,10,11,21,34
等。MySQL的LIKE限制
我檢索與LIKE語句值,但因爲我使用它與%<value>%
,當搜索1
時,它返回11,21,1等等。
我該如何限制它,以基於一個返回值?
Basicly我在我的表中的一行,具有如下格式爲它的價值 - 1,2,3,4,10,11,21,34
等。MySQL的LIKE限制
我檢索與LIKE語句值,但因爲我使用它與%<value>%
,當搜索1
時,它返回11,21,1等等。
我該如何限制它,以基於一個返回值?
相反的col LIKE '%<value>%'
做
col LIKE '%,<value>,%' OR col LIKE '<value>,%' OR col LIKE '%,<value>' OR col LIKE '<value>'
或更好,但
col REGEXP '(.+,|^)<val>(,.+|$)'
但是,最好的解決辦法是改變你的數據結構!請使用SET
類型或多個字段或連接表。
嘗試find_in_set()
字符串函數:
SELECT ...
FROM ...
WHERE FIND_IN_SET(somevalue, '1,2,3,4,10');
注意,這是一個純粹的MySQL的功能,而不是其他任何地方,而無需通過鉅額跳火圈。
如果只想返回特定的匹配項,則使用=而不是LIKE。 like是爲了返回部分匹配,不像=只返回特定的匹配。如果你只是想匹配第一部分,使用%,但11仍然會返回111,但不是211.一個常見的錯誤是使用LIKE的一切,或刪除%%等。另外,你真的認爲你的MYSQL數據庫中的行的值是1,2,3,4,11,12等嗎?如果是這樣,你爲什麼試圖根據其中的數字來搜索該值?我想你會尋找整體的一個子集,如%3,4,11%等...
是強制要求的情況下使用喜歡? – PachinSV 2011-05-20 17:16:44