1-1. 通配符的分类
"%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次)。
"_" 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。当然,也可以like "陈____",数量不限。
like操作符:LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;但如果like后面没出现通配符,则在SQL执行优化时将 like 默认为 “=”执行
通配符的使用
1) % 通配符:
-- 模糊匹配含有“菜”字的数据
SELECT * from app_info where appName like '%菜%';
-- 模糊匹配含有“xx网x车xxx”的数据,如:"携程网约车客户端"
SELECT * from app_info where appName like '__网_车%';
注意事项: 如果数据中有“%”、“_”等符号,那岂不是和通配符冲突了
注意大小写,在使用模糊匹配时,也就是匹配文本时,MySQL默认配置是不区分大小写的。当你使用别人的MySQL数据库时,要注意是否区分大小写,是否区分大小写取决于用户对MySQL的配置方式.如果是区分大小写,那么像Test12这样记录是不能被"test__"这样的匹配条件匹配的。
注意尾部空格,"%test"是不能匹配"test "这样的记录的。
注意NULL,%通配符可以匹配任意字符,但是不能匹配NULL,也就是说SELECT * FROM blog where title_name like '%';是匹配不到title_name为NULL的的记录
如果数据中有“%”、“_”等符号怎么办
这里需要加 ESCAPE 关键字进行转义
类如:SELECT * from ct_food where FoodName LIKE '%/_%' ESCAPE '/';
LOCATE()函数
返回 substr 在 str 中第一次出现的位置。如果 substr 在 str 中不存在,返回值为 0,如果substr 在 str 中存在,返回值为:substr 在 str中第一次出现的位置。
用LOCATE关键字进行模糊匹配, 从第二个字符开始匹配"网",则"网易云游戏、网来商家"等数据就被过滤了
例子:SELECT * from app_info where LOCATE('网', `appName`, 2) > 0;
POSITION()方法
语法:POSITION(substr IN subs)
-- 用POSITION关键字进行模糊匹配,等同于:"like '%网%'"
SELECT * from app_info where POSITION( '网' IN `appName`);
INSTR()方法
返回字符串str中第一次出现子字符串substr的位置。INSTR()与LOCATE()的双参数形式相同,只是参数的顺序相反。
例:SELECT * from app_info where INSTR(`appName`, '网') > 0;
类如我这个就是通过name来查询
来源地址:https://blog.csdn.net/Cx330_0217/article/details/129080122