假设存在一个表,表名为content_node_relation,包含以下字段且存在几条记录:
content_id | node_id | content_status | download_progress |
---|---|---|---|
20170322_bbb | A | LOCATED | 0 |
20170322_ddd | A | LOCATED | 0 |
20170407_a9 | lab1411 | LOCATED | 0 |
现在需要根据用户从网页输入的三个字段进行模糊匹配查询,每个字段都可能是不完整输入,例如:
content_id : bbb , node_id : A
则查询语句应该为:
select*from content_node_relation where content_id like '%bbb%' and node_id like '%A%';
查询结果为:
若用户从网页只输入了一个字段,例如:
content_id : ddd
则查询语句应该为:
select*from content_node_relation where content_id like '%ddd%' and node_id like '%%';
查询结果为:
此外,如用户查询的字段较多,可以用concat关键字将多个字段组装起来,但是这样就不能按字段进行模糊匹配了,而是按照所有字段合并在一起进行模糊查询。例如,用户从网页输入的信息为:
content_id : bbb , node_id : A
则查询语句为:
select*from content_node_relation where concat(content_id,node_id) like '%bbbA%';
查询结果为:
总结
MySQL多字段模糊查询的一般语法为:
select*from table where column1 like '%a%' and column2 like '%b%'; (a,b为用户输入的用于模糊搜索的字段)
多字段拼接后模糊查询的一般语法为:
select*from table where concat(colunm1,colum2) like '%ab%';