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)
但是这种方式只适用于用逗号隔开的字符串,使用时要注意一下
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql模糊查询1,11,111用逗号(其他符号)拼接的相似字符串 - Python技术站