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

数据模糊查询逻辑如下:

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 "%\%%
实际应用搜索车牌号为7位的车辆(川A88888)存在异常车牌号就不是7位
select car_num from car where car_num like "_______"

like后面直接加7根下划线就可以了

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐