测试必备的Mysql常用sql语句系列

https://www.cnblogs.com/poloyy/category/1683347.html

前言

正则的强大不言而喻,Mysql中也提供了 regexp 关键字来进行正则查询

正则查询的语法格式

<列名> regexp '正则表达式'

常用的正则表达式

选项 说明 例子 匹配值示例
^ 匹配文本的开始字符 '^b' 匹配以字母 b 开头的字符串 book、big、banana、bike
$ 匹配文本的结束字符 'st$' 匹配以 st 结尾的字符串 test、resist、persist
. 匹配任何单个字符 'b.t' 匹配任何 b 和 t 之间有一个字符 bit、bat、but、bite
* 匹配零个或多个在它前面的字符 'f*n' 匹配字符 n 前面有任意个字符 f fn、fan、faan、abcn
+ 匹配前面的字符 1 次或多次 'ba+' 匹配以 b 开头,后面至少紧跟一个 a ba、bay、bare、battle
<字符串> 匹配包含指定字符的文本 'fa' 匹配包含‘fa’的文本 fan、afa、faad
[字符集合] 匹配字符集合中的任何一个字符 '[xz]' 匹配 x 或者 z dizzy、zebra、x-ray、extra
[^] 匹配不在括号中的任何字符 '[^abc]' 匹配任何不包含 a、b 或 c 的字符串 desk、fox、f8ke
字符串{n,} 匹配前面的字符串至少 n 次 'b{2}' 匹配 2 个或更多的 b bbb、bbbb、bbbbbbb
字符串
{n,m}
匹配前面的字符串至少 n 次, 至多 m 次 'b{2,4}' 匹配最少 2 个,最多 4 个 b bbb、bbbb

先看看product表有什么数据

product表

这里没有截全哈,因为数据比较多

栗子一:^

select * from product where product_name regexp '^2018';

栗子二:$

select * from product where product_name regexp '潮$';

先看看emp表有什么数据

emp表

后面再解释下为啥又换表了

栗子三: *、+

po*:查询 name 字段包含字母 p ,且 p 后面出现字母 o 的记录,而 * 可以表示0个字符,代表不出现

select * from emp where name regexp 'po*';

po+:查询 name 字段包含字母 p ,且 p 后面出现字母 o 的记录,但 + 表示至少出现1个字符

select * from emp where name regexp 'po+';

栗子四:[]

下面两种写法是一样的,用 , 隔开每个字符,可能可读性更高

select * from emp where name regexp '[p,s]';
select * from emp where name regexp '[ps]';

栗子五:[^]

注意:这里的^是取反,不是开头的意思哦!不要混淆

查询 id >=10 且 开头字母 p 的记录

select * from emp where id >=10 and  name regexp '^[^p]';

为啥中途换表

因为,我发现正则表达式并不是对所有中文都生效,举个下面的栗子

select * from emp where name regexp '[小]';

可以看到,name 字段需要匹配到一个【小】才应该被返回,但是除了红框以外的数据都被返回了,有问题有问题....

那为什么会这样呢?

  • 原来,是因为 regexp 不支持多字节匹配,说白了,就是不支持中文编码
  • 要想查询中文,最好通过 like 关键字进行模糊匹配啦

当然啦,也不是没有解决办法

只需要用小括号()把中文括起来就行了

select * from emp where name regexp '^(小)';

但,这种写法在 [ ] 里面还是不起作用

select * from emp where name regexp '[(小)]';

所以啊,还是推荐用 like 模糊匹配中文字符吧!而且日常工作中也完全够用啦!

Mysql常用sql语句(21)- regexp 正则表达式查询的更多相关文章

  1. MySQL常用sql语句-----数据表的查询操作

    常用的sql语句如下,应对工作足以 1.查询指定字段 select c_id,c_age,c_name from t_student; select c_id as 编号,c_name as 姓名,c ...

  2. Mysql 常用 SQL 语句集锦

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  3. Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  4. mysql 常用 sql 语句 - 快速查询

    Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互         1.1.1 mysql 连接             mysql.exe -hPup    ...

  5. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  6. Mysql常用sql语句(11)- between and 范围查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 between and可以判断值是否在指定范围内 ...

  7. Mysql常用sql语句(九)- like 模糊查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  8. Mysql常用sql语句(14)- 多表查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  9. Mysql常用sql语句(19)- in / exists 子查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 子查询在我们查询方法中是比较常用的,通过子查询可 ...

随机推荐

  1. react-devtools安装调试

    初学react,Chrome F12调试,需要一款插件react-devtools. 网上大多对于翻墙不利索的同学大多才用了git源码.npm本地手动打包Chrome拓展程序.如:https://ww ...

  2. 详解 Set接口

    (请关注 本人"集合"总集篇博文--<详解 Collection接口>) 在Collection接口的子接口中,最重要的,也是最常见的两个-- List接口 和 Set ...

  3. 关于vue切换用户,路由表不更新问题

    简介 我想很多同学在项目中可能会遇到类似的问题,然后一顿操作,发现结果不尽人意.于是查阅各种资料,走进很多坑(可能你阅读的这篇随笔也是个坑).接下来我所描述的是关于我使用不同权限的用户切换登陆后,需要 ...

  4. Nmap-脚本检测CVE漏洞

    Nmap的一个鲜为人知的部分是NSE,即Nmap Scripting Engine,这是Nmap最强大和最灵活的功能之一.它允许用户编写(和共享)简单脚本,以自动执行各种网络任务.Nmap内置了全面的 ...

  5. Django中MySQL事务的使用

    Django中事物的使用 from django.db import transaction @transaction.atomic通过transaction的@transaction.atomic装 ...

  6. Golang快速入门:从菜鸟变大佬

    最近写了不少Go代码,但是写着写着,还是容易忘,尤其是再写点Python代码后.所以找了一篇不错的Golang基础教程,翻译一下,时常看看. 原文链接: 「Learning Go - from zer ...

  7. [Qt] 去掉QMessageBox标题栏上的图标

    msgBox.setWindowFlags(Qt::Drawer);

  8. Java第一阶段作业总结

    目录 0.前言 1.作业过程总结 2.OO设计心得 3.测试的理解与实践 4.课程收获 5.对课程的建议 前言 本次博客针对第一阶段的三次作业发表总结,作业要求主要是初学者对于Java的基本语法.用法 ...

  9. Scala教程之:静态类型

    文章目录 泛类型 型变 协变 逆变 不变 类型上界 类型下界 内部类 抽象类型 复合类型 自类型 隐式参数 隐式转换 多态方法 类型推断 Scala是静态类型的,它拥有一个强大的类型系统,静态地强制以 ...

  10. zabbix监控ftp

    [root@agent ~]# yum -y install vsftpd [root@agent ~]# systemctl start vsftpd[root@agent ~]# systemct ...