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

相关推荐
小小龙学IT2 分钟前
Qt 元对象系统(Meta-Object System)深度解析:从 MOC 到反射式编程
数据库·qt
想带你从多云到转晴31 分钟前
MySQL重点梳理
数据库·mysql
胖头鱼的鱼缸(尹海文)1 小时前
胖头鱼的技术专栏-465 数据库能力上移还是下沉:库变弱了,应用就变重了(20260828)
数据库
2601_962181961 小时前
Redis Redis介绍、安装 - Redis客户端
数据库·redis·postman
2601_962062942 小时前
Spring Boot入门——Spring Boot项目的创建
java·数据库·spring boot
冰暮流星2 小时前
mysql之外键约束
数据库·mysql
茶栀(*´I`*)2 小时前
数据库零基础入门指南:从基本概念到 SQL 实战
数据库·sql
ERD Online2 小时前
Cursor 连上 MCP:读一张 ER 图,提交一版建议
数据库·后端·开源·cursor·mcp
foolishlee2 小时前
openGauss postmaster退出流程
数据库
叫我:松哥3 小时前
基于flask仿小米商城管理系统,使用flask开的一个商场网站
数据库·后端·python·flask