模糊查询

MySQL模糊查询用法大全(正则、通配符、内置函数等)__陈哈哈的博客-CSDN博客_mysql模糊查询的通配符

一、通配符的分类

1. "%"百分号通配符

"%":表示任何字符出现任意次数

//查询以"结构"结尾的数据
SELECT * from biaoming where type like '%结构';
//查询出现"结构"的数据
SELECT * from biaoming where type like '%结构%';
//查询以"结构"开头的数据
SELECT * from biaoming where type like '结构%';
//......

2. "_"下划线通配符

"_":表示只能区配单个字符,不能多,也不能少

3. like操作符

如果使用like操作符时,后面没有使用("%"或者"_"),那么效果和"="是一样的

例子:下面两个语句执行结果一样

SELECT * from biaoming where type='数据结构'; 

SELECT * from biaoming where type like '数据结构';

所以,如果写成 select * from biaoming where type like "数据结"; 是查询不到任何东西的,因为没有 type = "数据结" 的,只有 type="数据结构"

4.注意事项:

1.MySql 在区配正文的时候,是不区分大小写的

2.通配符不能匹配 NULL

5.数据中有 "%"和"_"的情况

要加 ESCAPE 关键词进行转义

例如:数据为 "数%据_结构"

//这样子写会查询到整个表的数据
SELECT * from biaoming where type like '%_%';
//查询 带有 "_"的数据
SELECT * from biaoming where type like '%/_%' ESCAPE '/';
//查询带有 "%" 的数据
SELECT * from biaoming where type like '%/%%' ESCAPE '/';

二、使用MySql内置函数检索

1.locate()函数

返回第一次出现的位置,没找到就返回NULL

//相当于 like '%据%'
SELECT * from biaoming where LOCATE('',type)>0;
//从第二个字符开始查询,像"据说"这样的数据就不会被查询出来,因为'据'在第一个字符位上
select * from biaoming where LOCATE('',type,2)>0;

2.POSITION()

和locate的作用一样

SELECT * from biaoming where POSITION('' IN type);

3.INSTR()

和locate一样,但是参数的位置相反

SELECT * from biaoming where INSTR(type,'');

三、MySql regexp,rlike正则查询

1.regexp

 

 

 

//相对于 like '%据%'
SELECT * FROM biaoming where type REGEXP '';
//查询像 '%据%' 或者像 '%二%' 的数据 或者带有据和二的数据
select * from biaoming where type REGEXP '据|二';
//查询像 '%据%二%'的数据,且顺序一定是先据再二
select * FROM biaoming where type REGEXP '据.+二';
//查询包含[]里面字符的数据,不区分大小写
select * from biaoming where type REGEXP '[a-z]';
//区分大小写
select * from biaoming where type REGEXP BINARY '[A-Z]';

特殊符号区配:

regexp '\\.';     区配含有.的数据

regexp '[.]'      区配含有.的数据

 

posted on 2022-10-29 14:48  201812  阅读(126)  评论(0编辑  收藏  举报