mysql实现模糊查询:一个输入值匹配多个字段和多个输入值匹配一个字段
1.一个输入值匹配多个字段
关键语法如下 :
SELECT
*
FROM
表名
WHERE
CONCAT(
IFNULL( 字段1, '' ),
IFNULL( 字段2, '' ),
IFNULL( 字段3, '' )) LIKE "%关键字%"
mybatis中mapper中的写法如下:
SELECT
*
FROM
`test`
WHERE
1 = 1
<if test="name1!=null and name1 !=''">
and CONCAT(`name1`,`name2`,`name3`) like "%"#{name1}"%"
</if>
<if test="name2!=null and name2 !=''">
and CONCAT(`name1`,`name2`,`name3`) like "%"#{name2}"%"
</if>
<if test="name3!=null and name3 !=''">
and CONCAT(`name1`,`name2`,`name3`) like "%"#{name3}"%"
</if>
需要注意的是:当查询多个字段时,每个字段需要加上IFNULL() 函数,这样保证了当各个匹配的字段中其他列有空的情况下,也会返回这个查询的行,从而保证返回正确的结果集。
2.多个输入值匹配一个字段
关键语法如下:
select * from test where name like 'a%' or name like 'b%' or ......;
mybatis中mapper中的写法如下:
SELECT
*
FROM
`test`
WHERE
`name` like concat("%", #{实体字段1}, "%") or `name` like concat("%", #{实体字段2}, "%")
结束语
虽然老弟不能陪你一生,但让你的技术满满当当儿。