一、正则表达式介绍

正则表达式用来匹配文本的特殊的串(字符集合)。

二、使用MySQL正则表达式

1、MySQL仅仅支持多数正则表达式实现的一个很小的子集

2、LIKE匹配整个列值;而REGEXP匹配列值的子串

如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。

mysql>select * from students;

+--------+-----------+

|number | name1|

+--------+-----------+

|1 | space|

|2 | warmspace |

+--------+-----------+

mysql>select name1 from students where name1 like 'space';   全名匹配

+-------+

|name1 |

+-------+

|space |

+-------+

mysql>select name1 from students where name1 REGEXP 'space';  子串匹配

+-----------+

|name1|

+-----------+

|space|

|warmspace |

+-----------+

3、默认MySQL中的正则表达式匹配不区分大小写,可使用BINARY关键字区分大小写

mysql> select name1 from students where name1 REGEXP 'SPACE';

+-----------+

| name1     |

+-----------+

| space     |

| warmspace |

+-----------+

mysql> select name1 from students where name1 REGEXP BINARY 'SPACE';

Empty set (0.00 sec)

4、进行OR匹配:为搜索两个串之一,使用|

mysql> select * from students;

+--------+-----------+------+

| number | name1      | age  |

+--------+-----------+------+

|      1 | space      |   15 |

|      2 | warmspace  |   34 |

|      3 | summerspace |  28 |

+--------+-----------+------+

2 rows in set (0.00 sec)

mysql> select * from students where age REGEXP '1|4';

+--------+-----------+------+

| number | name1     | age  |

+--------+-----------+------+

|      1 | space     |   15 |

|      2 | warmspace |   34 |

+--------+-----------+------+

5、匹配几个字符之一:匹配任何单一字符

[]是另一种形式的OR语句。'005-[123]'与’005-[1|2|3]’是等价的。

mysql> select * from students;

+--------+-------------+------+-----------------+

| number | name1       | age  | id              |

+--------+-------------+------+-----------------+

|      1 | space       |   15 | 101-02-01-005-2 |

|      2 | warmspace   |   34 | 101-02-01-005-1 |

|      3 | summerspace |   28 | 101-02-01-005-3 |

|      4 | abc         |   20 | 101-02-01-005-4 |

+--------+-------------+------+-----------------+

mysql> select name1,id from students where id REGEXP '005-[123]';

+-------------+-----------------+

| name1       | id              |

+-------------+-----------------+

| space       | 101-02-01-005-2 |

| warmspace   | 101-02-01-005-1 |

| summerspace | 101-02-01-005-3 |

+-------------+-----------------+

匹配除给定字符外的字符:

mysql> select name1,id from students where id REGEXP '005-[^123]';

+-------+-----------------+

| name1 | id              |

+-------+-----------------+

| abc   | 101-02-01-005-4 |

+-------+-----------------+

6、可使用-来定义一个范围

如[1-9],[a-b]。

mysql> select name1,id from students where id REGEXP '005-[1-3]';

+-------------+-----------------+

| name1       | id              |

+-------------+-----------------+

| space       | 101-02-01-005-2 |

| warmspace   | 101-02-01-005-1 |

| summerspace | 101-02-01-005-3 |

+-------------+-----------------+

7、为了匹配特殊字符,必须用\\为前导

例如\\-,\\.等。这种处理即转义(escaping)。多数正则表达式实现使用单个反斜杠转义特殊字符,但MYSQL要求两个(MYSQL自己解释一个,正则表达式库解释另一个)。\\也用来引用元字符(具有特殊含义的字符),如下表:元字符说明

\\f换页

\\v纵向制表

8、为了更方便工作,可以使用预定义的字符集,称为字符类(character class)

mysql> select name1,age from students where age REGEXP '[[:digit:]]';

+-------------+------+

| name1       | age  |

+-------------+------+

| space       |   15 |

| warmspace   |   34 |

| summerspace |   28 |

| abc         |   20 |

+-------------+------+类说明

[:alnum:]任意字母和数字(同[a-zA-Z0-9])

[:alpha:]任意字符(同[a-zA-Z])

[:blank:]空格和制表(同[\\t])

[:cntrl:]ASCII控制字符(ASCII 0到31和127)

[:digit:]任意数字(同[0-9])

[:graph:]与[:print:]相同,但不包括空格

[:lower:]任意小写字母(同[a-z])

[:print:]任意可打印字符

[:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符

[:space:]包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])

[:upper:]任意大写字母(同[A-Z])

[:xdigit:]任意十六进制数字(同[a-fA-F0-9])

9、使用正则表达式重复元字符匹配多个实例

mysql> select * from students;

+--------+-------------+------+-----------------+

| number | name1       | age  | id              |

+--------+-------------+------+-----------------+

|      1 | space       |   15 | 101-02-01-005-2 |

|      2 | warmspace   |   34 | 101-02-01-005-1 |

|      3 | summerspace |   28 | 101-02-01-005-3 |

|      4 | abc         |   20 | 101-02-01-005-4 |

+--------+-------------+------+-----------------+

mysql> select * from students where name1 REGEXP 'm{2}';

+--------+-------------+------+-----------------+

| number | name1       | age  | id              |

+--------+-------------+------+-----------------+

|      3 | summerspace |   28 | 101-02-01-005-3 |

+--------+-------------+------+-----------------+元字符说明

*0个或多个匹配

+1个或多个匹配(等于{1,})

?0个或1个匹配(等于{0,1})

{n}指定数目的匹配

{n,}不少于指定数目的匹配

{n,m}匹配数目的范围(m不超过255)

10、定位符(为了匹配特定位置的文本)

mysql> select * from students where name1 REGEXP 'c$';

+--------+-------+------+-----------------+

| number | name1 | age  | id              |

+--------+-------+------+-----------------+

|      4 | abc   |   20 | 101-02-01-005-4 |

+--------+-------+------+-----------------+元字符说明

^文本的开始

$文本的结尾

[[:<:>

[[:>:]]词的结尾

11、简单的正则表达式测试:可以在不使用数据库表的情况下用SELECT来测试正则表达式

REGEXP检查总是返回0或1(匹配)。

mysql> select 'hello' regexp '[0-9]';

+------------------------+

| 'hello' regexp '[0-9]' |

+------------------------+

|                      0 |

+------------------------+

mysql+3.11.1_【MySql】1.3 使用正则表达式搜索相关推荐

  1. ubuntu mysql emma_Ubuntu 11.10 MySQL客户端 Emma 6.0 中文乱码解决办法

    在Linux如果使用MySQL的图形客户端,我感觉Emma算一个好用的了. 比起mysql自己的Mysql Query Browser 要好, 而且最不能忍受的是Mysql Query Browser ...

  2. 11.3/11.4/11.5 MySQL安装

    2019独角兽企业重金招聘Python工程师标准>>> MySQL目录概要 MySQL的几个常用安装包:rpm.源码.二进制免编译 cd /usr/local/src //切换到下载 ...

  3. 使用php最容易犯的11个MySQL错误。

    对于大多数web应用来说,数据库都是一个十分基础性的部分.如果你在使用PHP,那么你很可能也在使用MySQL-LAMP系列中举足轻重的一份子. 对于很多新手们来说,使用PHP可以在短短几个小时之内轻松 ...

  4. SuSE 11 安装mysql 5.6.35步骤

    1.创建安装用户组合安装用户. # groupadd mysql # useradd -g mysql mysql -d /usr/local/mysql 2.  将Redis安装包"mys ...

  5. PHP程序员最常犯的11个MySQL错误

    对于大多数web应用来说,数据库都是一个十分基础性的部分.如果你在使用PHP,那么你很可能也在使用MySQL-LAMP系列中举足轻重的一份子.对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地 ...

  6. 用通俗易懂的大白话彻底搞明白mysql的数据类型以及mysql中的int(11),这个11到底是啥?

    今天抽时间来讲一下mysql里的知识点,之前有不少人问过我,mysql中的int(11),这个11到底是啥意思?是11位的意思吗?你是否也想过这个问题,是否也有这个疑问? ok,今天就展开来讲一下,用 ...

  7. mysql int 11 最大多少_types - mysql中int(11)列的大小(以字节为单位)是多少?...

    types - mysql中int(11)列的大小(以字节为单位)是多少? 以字节为单位的mysql中int(11)列的大小是多少? 并且可以存储在此列中的最大值? Gaurav asked 2019 ...

  8. mysql 8.0win7_Win7系统安装 MySQL 8.0.11

    1. 下载 MySQL 8.0.11 版本 2. 下载完毕,解压到指定文件夹 3. 创建 my.ini 配置文件[mysql 8.0.4以后版本要注意密码认证插件的变化] 1 [mysql]2 # 设 ...

  9. mysql 第11章 视图

    2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版 ...

最新文章

  1. L1-009. N个数求和
  2. win7右键新建文件夹不见了
  3. spring cloud API网关
  4. 自定义的OnFileSaveAs函数无法响应
  5. 二叉排序树(搜索树BST)-详解结点的删除
  6. [转】:Android调试工具及方法
  7. java cookie p3p_P3P script src 解决cookie存取的跨域问题 java 终极解决办法
  8. rollup打包js的注意点-haorooms博客分享
  9. 股票历史数据-股票历史交易数据下载成Excel,股票历史交易数据查询
  10. 【python 走进NLP】hanNLP 简繁拼音转换
  11. latex审阅时添加行号
  12. 详解AVL树(平衡二叉树)
  13. ActiveMQ集群安装与配置
  14. 形状超链接html,ppt中标注形状超链接怎么做
  15. 单片机c语言sfr数据读,单片机c语言的sbit和sfr.docx
  16. 5.9 使用新建调整图层命令调整图像 [原创Ps教程]
  17. 一文解析:安装和运行Qlik Sense的系统要求及浏览器支持
  18. 共享单车之租赁需求预估
  19. 数仓4.0(三)------数据仓库系统
  20. 揭开500亿“区块链”骗局

热门文章

  1. 恭喜你发现了宝藏,编程习惯-日积月累
  2. Docker入门六部曲——基本引导
  3. Go 学习笔记(80)— Go 标准库 container/list(单链表、双链表)
  4. 自己动手实现20G中文预训练语言模型示例
  5. Jieba分词原理与解析
  6. 聚类和EM算法——K均值聚类
  7. 原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展
  8. 什么是OpenMAX技术分析OpenMAX
  9. CSS 文字溢出显示省略号
  10. Android TextView 在strings 里面 实现换行