一、MySQL通配符模糊查询(%,_)

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_foodwhere FoodName LIKE ‘%/_%’ ESCAPE ‘/’;

MySQL内置函数检索(locate,position,instr)

LOCATE()函数

返回 substr 在 str 中第一次出现的位置。如果 substr 在 str 中不存在,返回值为 0,如果substr 在 str 中存在,返回值为:substr 在 str中第一次出现的位置。

用LOCATE关键字进行模糊匹配, 从第二个字符开始匹配”网”,则”网易云游戏、网来商家”等数据就被过滤了

例子:SELECT * from app_info where LOCATE(‘网’, `appName`, 2) > 0;

POSITION()方法

语法:POSITION(substrIN 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来查询