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

 更新时间:2022年07月11日 14:48:37   作者:王小王_123  
这篇文章主要介绍了MySQL数据库操作DQL正则表达式,正则表达式描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串

前言:

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

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

-- ^ 在字符串开始处进行匹配
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就代表不能匹配

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

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

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

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

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

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

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

-- 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个,标准的名字叫做非贪婪模式

-- 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 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql类似oracle rownum写法实例详解

    mysql类似oracle rownum写法实例详解

    在本篇文章里小编给大家分享的是关于mysql类似oracle rownum写法以及相关实例内容,需要的朋友们可以学习下。
    2019-09-09
  • 使用mysql事件调度器定时删除binlog

    使用mysql事件调度器定时删除binlog

    MySQL5.1.6起Mysql增加了事件调度器(Event Scheduler),可以用做定时执行某些特定任务,来取代原先只能由操作系统的计划任务来执行的工作
    2014-03-03
  • 阿里云服务器安装Mysql数据库的详细教程

    阿里云服务器安装Mysql数据库的详细教程

    这篇文章主要介绍了阿里云服务器安装Mysql数据库的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • MYSQL必知必会读书笔记第三章之显示数据库

    MYSQL必知必会读书笔记第三章之显示数据库

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。接下来通过本文给大家介绍MYSQL必知必会读书笔记第三章之显示数据库,感兴趣的朋友参考下吧
    2016-05-05
  • 透彻理解Mysql连接的原理

    透彻理解Mysql连接的原理

    这篇文章主要为大家介绍了Mysql连接原理的深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Mysql 实现字段拼接的三个函数

    Mysql 实现字段拼接的三个函数

    这篇文章主要介绍了Mysql 实现字段拼接的三个函数,帮助大家更好的理解和使用MySQL 数据库,感兴趣的朋友可以了解下
    2020-11-11
  • Mysql系列SQL查询语句书写顺序及执行顺序详解

    Mysql系列SQL查询语句书写顺序及执行顺序详解

    这篇文章主要为大家介绍了Mysql系列SQL查询语句的书写顺序及执行顺序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • mysql的日期和时间函数大全

    mysql的日期和时间函数大全

    mysql的日期和时间函数 这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。
    2008-04-04
  • 安装的mysql中没有my.ini文件的解决方法

    安装的mysql中没有my.ini文件的解决方法

    本文主要介绍了安装的mysql中没有my.ini文件的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • mysql修改自增长主键int类型为char类型示例

    mysql修改自增长主键int类型为char类型示例

    这篇文章主要介绍了mysql修改自增长主键int类型为char类型示例,需要的朋友可以参考下
    2015-04-04

最新评论