Home  >  Article  >  Database  >  MySQL多关键字多字段模糊查询

MySQL多关键字多字段模糊查询

WBOY
WBOYOriginal
2016-06-07 17:27:551608browse

假设有这样两条数据: (表名为user) 1) username=admin,password=000000 2) username=admin,password=123456 我们要实现的效

假设有这样两条数据:
 
(表名为user)
 
1) username=admin,password=000000
 
2) username=admin,password=123456
 
我们要实现的效果是可以输入多个关键字查询,多个关键字间以逗号分隔。
 
使用上述表举例:输入单个关键字“admin”可查出这两条数据,输入“admin,000000”只查出第一条数据,可实现的sql语句是:
 
select * from user where concat(username, password) like '%admin%';
 
select * from user where concat(username, password) like '%admin%' and concat(username, password) like '%000000%';
 
concat的作用是连接字符串,但这样有一个问题:如果你输入单个关键字“admin000000”也会查到第一条数据,这显然不是我们想要的结果,,解决方法是:由于使用逗号分隔多个关键字,说明逗号永远不会成为关键字的一部分,所以我们在连接字符串时把每个字段以逗号分隔即可解决此问题,下面这个sql语句不会查询到第一条数据:
 
select * from user where concat(username, ',', password) like '%admin000000%';
 
如果分隔符是空格或其他符号,修改 ',' 为 '分隔符' 即可。
 
总结:
 
select * from 表名 where concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%关键字1%' and concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%关键字2%' ......;

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn