今天发现公司产品在模糊搜索时 搜索“_”会返回所有数据
然后拿到数据库去执行时确实发现会查出所有数据
数据模糊查询逻辑如下:
SELECT * FROM `work_time` WHERE `name` LIKE "%?%"
使用的是包含语句 ?为传入的值
_在SQL里面是通配符 代表一个字符
% 在SQL里面是通配符 代表任意长度字符
当我们输入
SELECT * FROM `work_time` WHERE `name` LIKE "%_%"
代表那么包含一个长度(>=1个长度)的所有数据
SELECT * FROM `work_time` WHERE `name` LIKE "%%%
代表那么包含任意长度的所有数据
因此需要转义 加 \ 可查出包含% 和_的数据
SELECT * FROM `work_time` WHERE `name` LIKE "%\_%
SELECT * FROM `work_time` WHERE `name` LIKE "%\%%