mysql進行模糊查詢時,基本都是LIKE "%sss%",有時候這種查詢時准確的,但是有種情況這種查詢會出現很大問題。
看一下下面這張表
如果想查詢字段test包含1的數據,一般我們會用常規方式查詢,如下:
SELECT * FROM c_test WHERE test LIKE "%1%"
但是查詢結果不盡人意,如下:
不僅把包含1的查出來了,包含11,110的都查詢出來了,這並不是我們想要的結果,因為我們只想要id為1的數據
此時,sql就有了大問題,我們可以做如下修改,將test字段值的兩端都加上英文逗號,然后再LIKE查詢,就不會有這種問題了,
sql如下:
SELECT * FROM c_test WHERE CONCAT(",",test,",") LIKE "%,1,%"
此時的查詢結果如下:
這才是我們想要的結果。
還有一種方式,用mysql函數FIND_IN_SET(str,strlist)
sql如下:
SELECT * FROM c_test WHERE FIND_IN_SET("1",test)
但是這種方式只適用於用逗號隔開的字符串,使用時要注意一下