【MySQL】MySQL番外01 — MySQL单表多字段模糊查询解决方法(转载请注明出处)
MySQL单表多字段模糊查询解决方法
背景:在项目中经常遇到查询接口需要实现单表中对多字段进行多个关键字的模糊查询,但这个关键字并不一定只存在于某个字段。
-
例如现有一张employees表,其中有last_name,first_name两个字段,分别记录一条用户的姓和名。根据用户输入的查询请求,在这两个字段中查询员工姓名的第三个字母是
a
的员工信息。 -
目前遇到的问题是,
a
是可能存在于两个字段中的任意一个或者多个,但又要求两个字段必须包含所有的关键词a
。如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此想到方法:把两个字段合并在一块,再进行模糊查找# 在查询记录的同时,将需要进行多字段模糊查询的字段合并成一个字串并加入到一个新的字段中,然后对这个新字段进行模糊查询。 SELECT * FROM employees WHERE CONCAT(last_name,first_name) LIKE '__a%'; /* 注意: CONCAT(str1, str2, ...) 返回值:由全体输入参数合并在一起而得到的字符串。只要输入的参数中有NULL值,就返回NULL。CONCAT允许只有一个输入参数的情况。 */
- 但,如果用户的查询请求更改为,在这两个字段中查询员工姓名的第三个字母是
a
的员工姓名。SQL语句将改为如下吗?SELECT CONCAT(last_name,first_name) AS "员工姓名" FROM employees WHERE CONCAT(last_name,first_name) LIKE '__a%'; /* 逻辑上是不是没有什么错误?为了满足查询的显示结果是员工姓名。 我们将last_name和first_name进行了合并,形成新的字段并起了别名为员工姓名。 那试试看能否正常运行吧?十分欢迎把你的运行结果公布在评论区里。 如果不能运行,请思考报错原因后进行修改,并把你的更改思路在评论区里发表出来~ */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具