美文网首页
MySQL 正则表达式查询

MySQL 正则表达式查询

作者: 乘风破浪的姐姐 | 来源:发表于2020-06-28 18:12 被阅读0次

正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的串的一种特殊语言。

Regexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。
以下使用student、courses、classes表查询
student表


image.png

courses表


image.png

classes表


image.png

查询s_name 中有有 ‘王’字的姓名(与like关键字类似)

select s_no,s_sex,s_name from student where s_name REGEXP BINARY '王' order by s_name;
image.png

查询coursesname中包含H的名字,不区分大小写

select * from courses s where s.coursesname REGEXP  'H' order by s.coursesname;
image.png

利用关键字REGEXP BINARY 关键字,可以进行大小写区分。

select * from courses s where s.coursesname REGEXP BINARY 'h' order by s.coursesname;
image.png

Regexp 进行OR匹配
‘|’ 表示OR操作符,它表示匹配其中之一,因此H和J都匹配并返回
多个OR条件,可以利用单个正则表达式进行匹配。

select * from courses s where s.coursesname REGEXP  'H|J' order by s.coursesname;
image.png

Regexp 进行特定字符匹配
Regexp 匹配几个字符之一,利用 [] 表示、另一种形式的OR

王[丽|红|艳] == 王丽 或者王红 或者王艳 为 王[丽|红|艳] 的缩写

select s_no,s_sex,s_name from student where s_name REGEXP  '王[丽|芳]' order by s_name;
image.png

也可以不带括号:

select s_no,s_sex,s_name from student where s_name REGEXP  '王|丽|芳' order by s_name;
image.png

Regexp 进行范围匹配
[0-9] 0到9数字匹配
[a-z] a到z字母匹配

select * from classes s where s.classname REGEXP  'p[A-Z]' order by s.classname;
image.png
select * from classes s where s.classname REGEXP  'py[0-9]' order by s.classname;
image.png

Regexp 进行特殊字符匹配
特殊字符匹配,多数的正则表达式实现是使用单个的反斜杠进行转义特殊字符

 select * from classes s where s.classname REGEXP  '\\.' order by s.classname;
image.png

匹配连在一起的3位数字

 select * from classes s where s.classname REGEXP  '[[:digit:]]{3}'   order by s.classname;
 select * from classes s where s.classname REGEXP  '[0-9]{3}'   order by s.classname;
image.png

^匹配字符串的开始位置

 select * from classes s where s.classname REGEXP  '^p'   order by s.classname;
image.png

$ 匹配字符串的结束位置

 select * from classes s where s.classname REGEXP  '#$'   order by s.classname;
image.png

$ 匹配字符串最后三个字符是数字

 select * from classes s where s.classname REGEXP  '[0-9]{3,}$'   order by s.classname;
image.png

^ 与 $ 的结合使用
查询以p开头1结尾中间有两个任意字符的记录

select * from classes s where s.classname REGEXP  '^p..1$' order by s.classname;
image.png

相关文章

  • 数据库笔记-SQL过滤(LIKE&正则表达式)

    操作符LIKE与通配符 查询语句: 结果: MySQL的正则表达式 基本字符匹配 .匹配任意字符 查询语句: 结果...

  • mysql 正则表达式

    前面我们学习了正则表达式其实我们在mysql中也可以使用正则语句来查询数据。 select * from stud...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • MySQL 索引及查询优化总结-2018-03-20

    MySQL 索引及查询优化总结 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位my...

  • SQL查询近期数据

    mysql查询时间的数据: 解释: 1.(mysql查询今天的数据) 2.(mysql查询昨天的数据) 3.(以当...

  • mysql json 查询

    mysql json 查询 MySQL 5.7新增对JSON支持 1. 普通 json 查询 数据 查询语句 数...

网友评论

      本文标题:MySQL 正则表达式查询

      本文链接:https://www.haomeiwen.com/subject/nnuhxktx.html