Heim  >  Artikel  >  Datenbank  >  MySQL多关键字多字段模糊查询

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

WBOY
WBOYOriginal
2016-06-07 17:27:551588Durchsuche

假设有这样两条数据: (表名为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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn