服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL数据库操作DQL正则表达式

MySQL数据库操作DQL正则表达式

2022-07-11 17:08王小王_123 Mysql

这篇文章主要介绍了MySQL数据库操作DQL正则表达式,正则表达式描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串

前言:

正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。

MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。

MySQL数据库操作DQL正则表达式

MySQL数据库操作DQL正则表达式

?
1
2
3
4
5
6
7
8
9
10
11
12
-- ^ 在字符串开始处进行匹配
SELECT 'abc' REGEXP '^a'; -- 1
-- $ 在字符串末尾开始匹配
SELECT 'abc' REGEXP 'a$'; -- 0
SELECT 'abc' REGEXP 'c$'; -- 1
-- . 匹配任意字符
SELECT 'abc' REGEXP '.b'; -- 1
SELECT 'abc' REGEXP '.c'; -- 1
SELECT 'abc' REGEXP 'a.'; -- 1
-- [...] 匹配括号内的任意单个字符
SELECT 'abc' REGEXP '[xyz]'; -- 0
SELECT 'abc' REGEXP '[xaz]'; -- 1

返回值为1就代表匹配到了,如果返回值为0就代表不能匹配

?
1
2
3
4
-- [^...] 注意^符合只有在[]内才是取反的意思,在别的地方都是表示开始处匹配
SELECT 'a' REGEXP '[^abc]';-- 0
SELECT 'x' REGEXP '[^abc]';-- 1
SELECT 'abc' REGEXP '[^a]';-- 1

使用[^]则代表的是,不能匹配到,那么有些人肯定会疑问,为什么最后一个却匹配到了,虽然里面包含a,但是[^a]代表的是,除了a,里面还有其他的,也可以匹配成功,这里其实涉及到了一个单词中的全匹配和局部匹配。

负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'

?
1
2
3
4
-- a* 匹配0个或多个a,包括空字符串。 可以作为占位符使用.有没有指定字符都可以匹配到数据
SELECT 'stab' REGEXP '.ta*b';
SELECT 'stb' REGEXP '.ta*b';
SELECT '' REGEXP 'a*';

注意这里的*是0个或者多个,所以最后一个返回的是1

?
1
2
3
-- a+ 匹配1个或者多个a,但是不包括空字符
SELECT 'stab' REGEXP '.ta+b';
SELECT 'stb' REGEXP '.ta+b';

注意这里的+是1个或者多个

?
1
2
3
4
5
6
7
8
9
10
11
12
13
-- a? 匹配0个或者1个a
SELECT 'stb' REGEXP '.ta?b';
SELECT 'stab' REGEXP '.ta?b';
SELECT 'staab' REGEXP '.ta?b';
-- a1|a2 匹配a1或者a2,
SELECT 'a' REGEXP 'a|b';
SELECT 'b' REGEXP 'a|b';
SELECT 'b' REGEXP '^(a|b)';
SELECT 'a' REGEXP '^(a|b)';
SELECT 'c' REGEXP '^(a|b)';
-- a{m} 匹配m个a
SELECT 'auuuuc' REGEXP 'au{4}c';
SELECT 'auuuuc' REGEXP 'au{3}c';

注意这里的?是0个或者1个,标准的名字叫做非贪婪模式

?
1
2
3
4
5
6
7
8
-- a{m,n} 匹配m到n个a,包含m和n
SELECT 'auuuuc' REGEXP 'au{3,5}c';
SELECT 'auuuuc' REGEXP 'au{4,5}c';
SELECT 'auuuuc' REGEXP 'au{5,10}c';
-- (abc) abc作为一个序列匹配,不用括号括起来都是用单个字符去匹配,如果要把多个字符作为一个整体去匹配就需要用到括号,所以括号适合上面的所有情况。
SELECT 'xababy' REGEXP 'x(abab)y';
SELECT 'xababy' REGEXP 'x(ab)*y';
SELECT 'xababy' REGEXP 'x(ab){1,2}y';

一般的实际应用场景,通过正则表达式可以对文本进行匹配,这比之前的like关键字要智能的多,应用场景也是比较的广,所以需要熟悉它的语法标准:

select 字段 regexp '正则表达式' as 命名 from 表   ……

到此这篇关于MySQL数据库操作DQL正则表达式的文章就介绍到这了,更多相关MySQL数据库操作DQL 内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/u_15172991/5428115

延伸 · 阅读

精彩推荐
  • Mysqlmysql server 5.7.20 安装配置方法图文教程

    mysql server 5.7.20 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql server 5.7.20 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    一切还不都是因为菜5832020-09-06
  • MysqlMysql Data目录和 Binlog 目录 搬迁的方法

    Mysql Data目录和 Binlog 目录 搬迁的方法

    刚开始安装时使用了默认目录,使用一段时间,数据慢慢变在,发现当前设置的目录空间不够时,就要搬迁数据到另一个目录了 ...

    MYSQL教程网6592019-11-25
  • MysqlMySQL查询指定字段不是数字与逗号的sql

    MySQL查询指定字段不是数字与逗号的sql

    今天小编遇到一个问题因为编辑的不细心不小心将关键词写到相关文章里面导致页面无法生成,这里用sql语言将这些内容获取出来...

    MYSQL教程网7202021-01-06
  • MysqlMySql数据库之alter表的SQL语句集合

    MySql数据库之alter表的SQL语句集合

    mysql之alter表的SQL语句集合,包括增加、修改、删除字段,重命名表,添加、删除主键等。本文给大家介绍MySql数据库之alter表的SQL语句集合,感兴趣的朋友...

    MYSQL教程网3162020-06-06
  • MysqlMySQL服务器进程CPU占用100%的解决方法

    MySQL服务器进程CPU占用100%的解决方法

    早上帮朋友一台服务器解决了 Mysql cpu 占用 100% 的问题。稍整理了一下,将经验记录在这篇文章里。 ...

    mysql教程网6732019-11-13
  • MysqlCentOS 7.2 Yum编译安装MySQL 5.6

    CentOS 7.2 Yum编译安装MySQL 5.6

    这篇文章主要为大家介绍了CentOS 7.2 Yum编译安装MySQL 5.6详细代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    shaonbean5042020-06-30
  • Mysqlmysql用户权限管理实例分析

    mysql用户权限管理实例分析

    这篇文章主要介绍了mysql用户权限管理,结合实例形式分析了mysql用户权限管理概念、原理及用户权限的查看、修改、删除等操作技巧,需要的朋友可以参考下...

    随风行云7752021-01-15
  • Mysql探究MySQL中varchar的定义长度

    探究MySQL中varchar的定义长度

    这篇文章主要介绍了探究MySQL中varchar的定义长度,文中主要对其长度究竟是字节还是字符做出了相关实验,需要的朋友可以参考下 ...

    MYSQL教程网3342020-05-10