PHP搜索MYSQL使用like '%$a%'语句,查询的结果是某条记录包含$a字符串的记录,并不是模糊匹配。比如查询“古镇漫步”,数据库中有一条记录是“古镇·漫步”,就无法被查到。这个问题有简单有效的解决方案吗?
12 回答
MM们
TA贡献1886条经验 获得超2个赞
like '%$a%',表示要查询$a前后匹配任意字符的,比如查询“古镇漫步”可以查出来“我们在古镇漫步”,也可以查出来“我们在古镇漫步了一个小时”
而“古镇·漫步”是跟你要查询的字符串顺序显然不符合。
侃侃尔雅
TA贡献1801条经验 获得超16个赞
“古镇·漫步”包含“古镇漫步”??
很明显不包含啊。。。
正确的写法
where xxx LIKE '%古镇%' and xxx LIKE '%漫步%'
慕后森
TA贡献1802条经验 获得超5个赞
"%古镇漫步%"匹配的是以"古镇漫步"为连续字符的内容当然找不到"古镇·漫步"
可以使用字符串函数、正则函数来匹配查找。
不过业务上一般规避使用mysql自带的函数,最好是mysql简单查询,再用php来代替处理业务逻辑需要的数据。
墨色风雨
TA贡献1853条经验 获得超6个赞
如果要搜索的记录数很多建议使用sphinx或者xunsearch或者elasticSearch。我的博客有sphinx安装文章。
如果记录数少,可以采用比如要搜索ABCD
,将其拆解成'SELECT * FROM A_TABLE WHERE FILED LIKE '%A%' AND FILED LIKE '%B%' AND FILED LIKE '%C%' AND FILED LIKE '%D%'
。
- 12 回答
- 0 关注
- 506 浏览
添加回答
举报
0/150
提交
取消