一般我们多个字段模糊查询写法:
select * from user where ( `name` like concat('%',#{searchValue},'%') or `number` like concat('%',#{searchValue},'%'))
但是当有多个字段需要模糊查询时,这样写不仅效率低下,而且也会增加不少代码量。
还有个更简单的写法:
select * from user where concat(`name`,`number`) like concat('%',#{searchValue},'%'))
这样写代码量少了很多,但是还会有一个问题。用concat的时候必须保证模糊查询的字段上没有null值,否则有null值的那行数据无法查询到。
解决办法就是将concat换成concat_ws。concat遇到null值拼接会返回null,concat_ws遇到null值拼接会忽略null。
就到这啦~