关于 mysql模糊查询时通配符 “_”和“%”的处理

今天发现公司产品在模糊搜索时 搜索“_”会返回所有数据
然后拿到数据库去执行时确实发现会查出所有数据

数据模糊查询逻辑如下:

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 "%\%%

猜你喜欢

转载自blog.csdn.net/weixin_44259638/article/details/120376010