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(推荐);


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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值