关于MySQL模糊搜索的使用情况分析:
1.假设现在有这样一个需求,数据库中的字段原本是一个值,现在需要改成多个值,以列表的形式保存在数据库当前的字段里。
假设数据库里已经改为了列表的格式字段,我们现在要根据这个字段去查询数据,可以使用like关键字,例如:
SELECT * FROM `user` WHERE test_str LIKE '%222%';
结果如下:
2.假设这个字段可能关联了多个表,或者说这个字段是属于关联字段,那么之前用到这个字段的所有地方就都需要修改。否则可能就会报错。
还是使用like关键字,但是需要和CONCAT函数使用:
SELECT u.* from user u JOIN test1 t ON u.test_str LIKE CONCAT('%', t.user_id, '%');
如图:
test1表数据:
查询结果:
关于concat函数的用法:
将多个内容「拼接」成1个字符串(拼接的内容可以是一个查询语句的结果)。
语法:
concat(str1,str2,...) :
总结:
在使用on关键字关联的时候,如果您使用
LIKE
'%t.user_id%
'进行查询,实际上是在查找包含字面字符串 '%t.user_id%
' 的记录,而不是查找包含test1
表中的user_id
列值的记录。所以需要concat函数去连接使用。