MySQL 正则表达式

在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。 如果您了解PHP或Perl,那

在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。

MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。

下表中的正则模式可应用于 REGEXP 操作符中。

模式描述

^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。

$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。

.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式。

[...]字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

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

p1|p2|p3匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,m}m 和 n 均为非负整数,其中n

实例

了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。以下我们将列出几个小实例(表名:person_tbl )来加深我们的理解:

查找name字段中以'st'为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查找name字段中以'ok'为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查找name字段中包含'mar'字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

   上一篇:MySQL NULL 值处理  
    下一篇:MySQL 事务  

  <h2>相关文章</h2>
  解析MySQL存储过程、常用函数代码

mysql实现的雪花算法 MySQL数据库如何修改表结构 史上最全MySQL使用规范分享 mysql 出现1071错误怎么办 mysql 出现1290错误怎么办 mysql 3306端口无法访问怎么办 mysql 触发器有几种 mysql 如何查看是否自动提交 mysql 出现1062错误怎么办 如何启动MySQL服务 mysql 如何关闭服务器

  网友评论

  相关栏目

      mssql

        navicat
        mysql
        nosql

        postgresql

        oracle

        db2

        access

        mariadb

        redis

  最近更新

    解析MySQL存储过程、常用函数代码 

mysql实现的雪花算法 MySQL数据库如何修改表结构 史上最全MySQL使用规范分享 mysql 出现1071错误怎么办 mysql 出现1290错误怎么办 mysql 3306端口无法访问怎么办 mysql 触发器有几种 mysql 如何查看是否自动提交 mysql 出现1062错误怎么办 如何启动MySQL服务 mysql 如何关闭服务器 mysql 如何查看表的大小 如何查看mysql中表的存储引擎类型 mysql 出现1267错误怎么办

  热门文章

    MYSQL中 char 和 varchar的区别 

MySQL8.0 如何快速加列 聊聊MySQL中的参数 MySQL的自增ID(主键) 用完了的解决方法 MySQL中的悲观锁与乐观锁 JDBC-idea导入mysql连接java的jar包(mac)的方法 MySQL 选择合适的存储引擎 Mysql脏页flush及收缩表空间原理解析 Mysql读写分离过期常用解决方案 mysql常用备份命令和shell备份脚本分享 Mysql误删数据解决方案及kill语句原理 MySQL 数据查重、去重的实现语句 Mysql复制表三种实现方法及grant解析 Mysql临时表及分区表区别详解 Mysql join联表及id自增实例解析



严禁网站镜像,否则我们将追究法律责任.本站声明:网站部分内容来源于网络,如有侵权,请联系我们,我们将及时处理 站务处理QQ:4961311

CopyRight © 2012-2020 每日运维 558idc.com , All Rights Reserved.