关于一个搜索框多条件查询,请大佬提供一个思路
模拟场景
是这样的,比如有一张会员表,包含字段:姓名
、年龄
、出生年月
、所在城市
、会员编号
、手机号
等信息。
现在需要一个搜索框模糊查询相关会员信息。但是在一个搜索框内完成,而且使用通配符查询
, "_龙"
、"龙_"
、"_龙_"
、"13801380*"
例如:搜索条件如下:
北京
的王姓
用户,手机号是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% 北京) 先遍历表 模糊查哪些字段含有 字段再组数组 再闭包拼接.
推荐文章: