关于一个搜索框多条件查询,请大佬提供一个思路

模拟场景是这样的,比如有一张会员表,包含字段:姓名年龄出生年月所在城市会员编号手机号 等信息。
现在需要一个搜索框模糊查询相关会员信息。但是在一个搜索框内完成,而且使用通配符查询 , "_龙""龙_""_龙_""13801380*"

例如:搜索条件如下:

  1. 北京王姓用户,手机号是1356528的会员用户,搜索框的内容如下 北京 王_ 1386528*,根据这条件模糊查询用户。

目前我的做法是只能单字段查询 例如:通过通配符模糊查询姓名,但是其他字段不知道怎么处理,求大神提供一个思路,或者付费实现。

更新一下:

感谢各位大佬的回答:

目前我是使用where 闭包 orwhere 查询的 ,但是效率比较底下.

我尝试过使用concat where like查询

SELECT * FROM `user` WHERE CONCAT_WS(`xm`,`nickname`,`cs`,`dz`,`sjhm`) LIKE '%keywords%'

这种情况 只支持双%号查询 不支持 王_ 138% 这种通配符查询.具体原理我 没搞清楚

然后我还尝试了

SELECT * FROM `user` WHERE CONCAT(`xm`,`nickname`,`cs`,`dz`,`sjhm`) LIKE CONCAT('%keywords%','_keywords','keywords_')

类似这种查询 ,但是这个关键词多了 需要后面的词对应前面的词 ,否则查询结果为空

我这个还有个特殊情况,就是表字段我是不知道的,因为是动态表.所以还要根据关键词(王_ 138% 北京) 先遍历表 模糊查哪些字段含有 字段再组数组 再闭包拼接.

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 16

搁我,我就干产品了,三个输入框他不好使吗,非得放一个输入框里,况且确定让运营使用通配符吗

3年前 评论

expole分段,然后 where like

3年前 评论

where 条件用 or 关键字连接就行了

3年前 评论

CONCAT 了解一下

3年前 评论

mysql 全文索引了解一下,不理想直接上大杀器es。

3年前 评论

如果搜索条件是固定格式的还好处理,如一楼所说! 如果要支持 北京 王_ 1386528* 王_ 1386528* 北京 或者 1386528* 北京 王_,就比较麻烦了,可以考虑上搜索引擎。

3年前 评论

可以参考下Gmail的邮件搜索,但是可能不太适合国内用户

3年前 评论
看你这么诚心求问,我就破天机指你几条明路
  • 笨方法 你可以把你想要检索的字段聚合放到一个字段里、给这个字段建议一个索引,做查询的时候分隔下检索字符,然后由你的业务 进行 or 或者 and 进行 like "%?%"查询,此种方法效率底下。
  • 花钱的方法 对接市面上的专业检索引擎、es
  • 不花钱但考验技术的方法 自己搭建solr/sphinx等其他。
3年前 评论

搁我,我就干产品了,三个输入框他不好使吗,非得放一个输入框里,况且确定让运营使用通配符吗

3年前 评论

@pigzzz concat 我试了

SELECT * FROM `xxx` WHERE CONCAT(`fielda`,`fieldb`,`fieldc`) LIKE CONCAT('北京%','石_');

类似这种写法 如果关键词多的话 必须对应前面的字段

SELECT * FROM `xxx` WHERE CONCAT(`fielda`,`fieldb`,`fieldc`) LIKE CONCAT('%北京%');

这样一个关键词的不知道为什么不能使用通配符

3年前 评论
pigzzz 3年前
melodic (作者) (楼主) 3年前
melodic (作者) (楼主) 3年前

@Savey 不能放在一个字段里 因为要通配符查询 放在一个里面就只支持%keywords% 这种查询了

3年前 评论
Savey 3年前
melodic (作者) (楼主) 3年前
Savey 3年前

@xjm_ 这种的where like '%keywords%' 不能通配符查询 但是如果多关键词 like concat 只能对应字段才有结果 可以使用通配符 , 目前没找到更好的办法

3年前 评论

@好人二狗 复杂情况 不支持设定搜索框 我也知道多个搜索框简单啊

3年前 评论

@Jinrenjie 不是固定的 而且我的表字段也是自动生成的 所以 我太难了

3年前 评论

花钱的方法 对接市面上的专业检索引擎、es

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!