Mysql 将多个字段转换为一个短语并在其上使用LIKE?
我有一个很棘手的问题 我有一个包含多个字段的表。现在,我的查询中的WHERE子句如下所示:Mysql 将多个字段转换为一个短语并在其上使用LIKE?,mysql,Mysql,我有一个很棘手的问题 我有一个包含多个字段的表。现在,我的查询中的WHERE子句如下所示: a.body like '%$v%' or a.model like '%$v%' or a.other like '%$v%' or s.name like '%$v%' or w.name like '%$v%' or b.name like '%$v%' or p.name like '%$v%' or c.name like '%$v%' or o.name like '%$v%' or cat
a.body like '%$v%'
or a.model like '%$v%'
or a.other like '%$v%'
or s.name like '%$v%'
or w.name like '%$v%'
or b.name like '%$v%'
or p.name like '%$v%'
or c.name like '%$v%'
or o.name like '%$v%'
or cat.name like '%$v%'
所有这些字段都是VARCHAR(255)
,而$v
将是搜索词
我想接受这个查询并执行更准确的搜索。现在它正在产生不想要的结果
我只是想知道,我可以把所有这些字段变成一个大字符串搜索,还是应该为所有字段添加全文索引,并对所有字段进行匹配
非常感谢您的帮助。您试过这个吗
WHERE CONCAT(a.body,a.model,a.other,s.name,w.name,b.name,p.name,c.name,o.name,cat.name) LIKE "%$v%"
你可以先执行一个UNPIVOT,然后执行类似的操作。你说的更精确的搜索是什么意思?你能详细说明一下吗?你展示了产生不准确结果的代码,但你确实告诉了一件事,精确的结果应该如何满足你的需要。好吧,这是不确定的,假设有人搜索“锐步滑板”,锐步是a.model,滑板是p.name。好吧,它与所有锐步或所有溜冰鞋现在的方式相匹配……定义不期望的结果。