飞道的博客

mysql模糊查询LIKE、REGEXP(正则)的详解(在可视化工具navicat下)

625人阅读  评论(0)


LIKE运算符: 执行通配查询,查询条件可包含文字字符或数字

  ‘%‘代表的是任意个字符,它的效果像是正则表达式里的’*’

  ‘_‘字符,这表示一个任意字符。效果类似正则表达式里面的’.’

REGEXP运算符: 是mysql的正则匹配操作符.

一、总结

LIKE

通配符 含义
% 表示任意个数的任意字符,匹配任意类型和长度的字符
- 表示一个任意字符,匹配一个任意字符,常用来限制表达式的字符长度语句

REGEXP(正则)

通配符 含义
[ ] 表示括号内所列字符中的一个字符
[^ ] 表示不在括号所列之内的一个字符
^ 匹配字符串开始位置
$ 匹配字符串结束位置
. 匹配除\n之外的任意单个字符
* 匹配前面的子表达式零次或多次

注:A|B|C表示匹配A或B或C

二、语法

SELECT 字段() FROMWHERE 查询字段(列) LIKE/REGEXP 条件

三、LIKE举例

3.1"%"的用法

3.1.1举例表

%:表示任意个数的任意字符,匹配任意类型和长度的字符
要求:将商品名中带有“牙膏”的都找出来

3.1.2代码

SELECT * FROM business WHERE goodsName LIKE '%牙膏%' 

3.1.3运行结果

3.2“-”的用法

3.2.1举例表

_ :表示一个任意字符,匹配一个任意字符,常用来限制表达式的字符长度语句
要求:1.找出以张开头的两个字的用户名 2.找出第二个字为浩的用户名

注:一个“_”代表一个字符

3.2.2代码

SELECT * FROM nameone WHERE username LIKE '张_' 
SELECT * FROM nameone WHERE username LIKE '_浩_' 

3.2.3运行结果


四、REGEXP举例

4.1“[ ]”的用法

4.1.1举例表

[]:表示括号内所列字符中的一个字符
要求:将为(1-3)狗子用户名都找出来

4.1.2代码

SELECT * FROM nameone WHERE username REGEXP '[1-3]狗子';

4.1.3运行结果

4.2“[^]”的用法

4.2.1举例表

[^ ] :表示不在括号所列之内的一个字符
要求:将除了序号为(1-3)且后缀为狗子的用户名都找出来

4.2.2代码

SELECT * FROM nameone WHERE username REGEXP '[^1-3]狗子';

4.2.3运行结果

4.3“^”的用法

4.3.1举例表

^:匹配字符串开始位置
要求:将以“张”开头的找出来

4.3.2代码

SELECT * FROM nameone WHERE username REGEXP '^张';

4.3.3运行结果

4.4“$”的用法

4.4.1举例表

$:匹配字符串结束位置
要求:找出以七结尾的用户名

4.4.2代码

SELECT * FROM nameone WHERE username REGEXP '七$';

4.4.3运行结果

4.5“.”的用法

4.5.1举例表

. :匹配除\n之外的任意单个字符
要求:将第三个字为“然”的用户名找出来

4.5.2代码

SELECT * FROM nameone WHERE username REGEXP '..然';

4.5.3运行结果

4.6“A|B|C”的用法

4.6.1举例表

A|B|C表示匹配A或B或C
要求:将匹配张、狗、二的用户名都找出来

4.6.2代码

SELECT * FROM nameone WHERE username REGEXP '张|狗|二';

4.6.3运行结果

4.7“*”的用法

4.7.1举例表

*:匹配前面的子表达式零次或多次,例如 ,张 山 * 能匹配张以及张山山
要求:将张山、张田、张山山统统找出来

4.7.2代码

SELECT * FROM nameone WHERE username REGEXP '张山*';

4.7.3运行结果

希望可以帮到你!若有不足,欢迎指出.


转载:https://blog.csdn.net/hanhanwanghaha/article/details/106170559
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场