mysql 多个字段 like 同一个值怎么实现

1,需求:前端一个输入框 输入的内容要和数据库中多个字段进行匹配

前端输入内容需要和 username,realname,age,bh 这四个字段匹配

方法1(可优化);select * from rzt_user where username like '%张三%' or realname like '%张三%' or age like '%张三%' or bh like '%张三%'

这种是最常用的

方法2(不建议使用(因为不好使)):SELECT * FROM rzt_user WHERE concat( username, ' ', realname ) LIKE '%张三%'

这种方式优化了上边的多个 like 和 or 但是在测试中发现多个字段就不好使了

方法3(推荐);

sql 复制代码
SELECT
	* 
FROM
	( SELECT username, realname, age, bh, CONCAT_WS( '||', username, realname, age, bh ) AS vals FROM rzt_user ) t 
WHERE	t.vals LIKE '%张三%'

这种方式是通过拼接嵌套sql的方式 先在里边把数据组合起来在外边 like 这种方式还是比较推荐的

主要是省去多次的 like 和 or 相当于在新的结果集里边 过滤 力推 哈哈哈

当然还有其他方式 比如用 java8的 stream filter 过滤 或者 用 redis 的 key 模糊匹配 其他两种方式可以试一下 我没有测试 因为我懒 我就想在保证性能的情况下用一个sql解决 狗头.jpg

相关推荐
好奇的菜鸟11 分钟前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°12 分钟前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
DuelCode1 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
幽络源小助理1 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
Hello.Reader2 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
简佐义的博客3 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法3 小时前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡
老纪的技术唠嗑局5 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
阿里云大数据AI技术6 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
m0_623955668 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle