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

相关推荐
JuannyOh几秒前
达梦数据库官方迁移工具SQLark:支持Oracle/MySQL/PostgreSQL迁移至达梦数据库!
mysql·postgresql·oracle·达梦数据库·迁移工具
新玉54013 分钟前
SQL注入
数据库·sql·oracle
阿桨3 分钟前
【Prometheus-OracleDB Exporter安装配置指南,开机自启】
数据库·oracle·centos·prometheus
赵渝强老师35 分钟前
【赵渝强老师】使用TiDB的审计日志
数据库·tidb
code_shenbing1 小时前
.NET Core 数据库ORM框架用法简述
数据库·c#·.netcore·orm
❀͜͡傀儡师1 小时前
基于Spring Boot 3.0、ShardingSphere、PostgreSQL或达梦数据库的分库分表
数据库·spring boot·postgresql
我真的不会C1 小时前
QT中的多线程
数据库·qt·系统架构
YONG823_API2 小时前
借助电商 API 接口实现电商平台商品数据分析的详细步骤分享
数据库·爬虫·microsoft·数据挖掘·数据分析
hnlucky2 小时前
redis 数据类型新手练习系列——List类型
运维·数据库·redis·学习·bootstrap·list
梦想画家3 小时前
Bash 脚本:让数据库管理更高效
数据库·bash