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

相关推荐
云闲不收30 分钟前
mysql如何快速生成测试大数据库
数据库·mysql·oracle
Cyrus_柯30 分钟前
网络编程(数据库:SQLite)
linux·c语言·数据库·sqlite
2501_9153743538 分钟前
如何彻底删除Neo4j中的所有数据:完整指南
数据库·oracle·neo4j
YUJIANYUE38 分钟前
PHP7+MySQL5.6 雪里开简易预约制访客管理系统V1.0
mysql·php
老纪的技术唠嗑局2 小时前
世事洞明皆学问 — 如何理解 OB 4.x 版本中的日志流?
数据库
小扳2 小时前
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)
java·数据库·人工智能·spring boot·transformer·课程设计
神奇萝卜头3 小时前
GO语言使用gorm的dbresolver插件实现数据库读写分离
数据库·golang·gorm
LIU_Skill3 小时前
MySQL用户管理与权限控制详解
android·数据库·mysql
明月看潮生4 小时前
青少年编程与数学 01-011 系统软件简介 10 IBM DB2数据库
数据库·青少年编程·ibm·编程与数学