mysql regexp用法
正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。
MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。
MySQL仅支持多数正则表达式实现的一个很小的子集。
----------------------
1、基本字符匹配
REGEXP后所跟的东西作为正则表达式处理。
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '1000'
- ORDER BY prod_name;
- ------返回------
- +------------------------+
- | prod_name |
- +------------------------+
- | JetPack 1000 |
- +------------------------+
. 表示匹配任意一个字符。
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '.000'
- ORDER BY prod_name;
- ------------返回-----------
- +-------------------------+
- | prod_name |
- +-------------------------+
- | JetPack 1000 |
- | JetPack 2000 |
- +-------------------------+
MySQL中的正则表达式匹配不区分大小写。
为区分大小写,可使用BINARY关键字。
如:WHERE prod_name REGEXP BINARY 'JetPack .000'
2、为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。
| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '1000 | 2000'
- ORDER BY prod_name;
- ------------返回------------
- +----------------------+
- | prod_name |
- +----------------------+
- | JetPack 1000 |
- | JetPack 2000 |
- +----------------------+
[ ] 匹配任何单一字符。
[123]定义一组字符,意思是匹配1或2或3.
[ ]是另外一种形式的OR语句,[123] Ton 就是 [1 | 2 | 3] Ton 的缩写。
^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '[123] Ton'
- ORDER BY prod_name;
- -------------返回------------
- +--------------------+
- | prod_name |
- +--------------------+
- | 1 ton anvil |
- | 2 ton anvil |
- +--------------------+
匹配范围
[0123456789] 或 [0-9] 将匹配数字0到9
[a-z] 匹配任意字母符号
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '[1-5] Ton'
- ORDER BY prod_name;
- ----------返回-----------
- +-------------------+
- | prod_name |
- +-------------------+
- | .5 ton anvil |
- | 1 ton anvil |
- | 2 ton anvil |
- +-------------------+
匹配特殊字符
\\ 为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。
\\- 表示查找 -
\\. 表示查找 .
- SELECT prod_name
- FROM vendors
- WHERE vend_name REGEXP '\\.'
- ORDER BY vend_name;
- -------------返回-------------
- +----------------------+
- | vend_name |
- +----------------------+
- | Furball Inc. |
- +----------------------+
\\ 也用来引用元字符(具有特殊意义的字符)
- \\f 换页
- \\n 换行
- \\r 回车
- \\t 制表
- \\v 纵向制表
匹配字符类
- 代码
- [:a;num:] 任意字母和数字(同 [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\\t\\r\\v])
- [:upper:] 任意大小字母(同 [A-Z])
- [:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])
匹配多个实例
- 元字符 说明
- * 0个或多个匹配
- + 1个或多个匹配(等于 {1, })
- ? 0个或1个匹配(等于 {0, 1})
- {n} 指定数目的匹配
- {n, } 不少于指定数目的匹配
- {n ,m} 匹配数目的范围(m不超过255)
以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。
- SELECT prod_name
- FROM products
- WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
- ORDER BY prod_name;
- ------------返回------------
- +-----------------------+
- | prod_name |
- +-----------------------+
- | TNT (1 stick) |
- | TNT (5 sticks) |
- +-----------------------+
^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。
LIKE 匹配整个串,而REGEXP匹配子串。
简单的正则表达式测试 可以在不使用数据库的情况下用SELECT来测试正则表达式。
REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测
试表达式,并试验它们。相应的语法如下:
SELECT 'hello' REGEXP '[0-9]'
这个例子返回0(因为文本hello中没有数字)。
mysql regexp用法的更多相关文章
- 【转载】 mysql explain用法
转载链接: mysql explain用法 官网说明: http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数: htt ...
- 知识点:Mysql 基本用法之存储过程
存储过程 一. 介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: 用于替代程序写的SQL语句,实现程序与sql ...
- 知识点:Mysql 基本用法之视图
视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...
- 知识点:Mysql 基本用法之流程控制
流程控制 一. 条件语句 if 语句实例: delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = ...
- 知识点:Mysql 基本用法之函数
函数 MySQL中提供了许多内置函数 例如: sql 内置函数: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种 ...
- 知识点:Mysql 基本用法之触发器
触发器 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为 注意:没有查询 一 .创建触发器 触发器基础语法: # 插入前 CREATE TRIGGER tri_before_insert_ ...
- 知识点:Mysql 基本用法之事务
事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 事务实例: create table user( id int primar ...
- Mysql基本用法-存储引擎-04
MYSQL中只有 INNODB和BDB 类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!) Mysql基本用法-存储引擎-02中的test_user表 和 phpcvs表 <?php ...
- ThinkPHP第十一天(关联模型使用,独立分组配置,MySQL concat用法)
1.关联模型的使用 定义方式:新建一个类文件UserRelationModel.class.php Class UserRelationModel extends RelationModel{ pro ...
随机推荐
- MySQL Error Handling in Stored Procedures
http://www.mysqltutorial.org/mysql-error-handling-in-stored-procedures/ mysql存储过程中的异常处理 定义异常捕获类型及处 ...
- PHP程序员7小时学会Kotlin系列 - 第一小时 背景
基础知识 Kotlin简单的说是Java语言的改良版本,是一种静态类型编程语言,可运行于JVM.Andoid或JavaScript环境,于2016年2月15日发布1.0正式版.Kotlin定位于一门通 ...
- Facebook的Hack语言三大看点
Hack语言主要有三大看点:类型化.异步.集合. Hack最基础的特性就是类型标注.PHP5已经开始支持对象的类型化,PHP7也提供了标量类型化声明.Hack提供了全面的类型标注支持,与其typech ...
- hibnate 创建表的时候type=innodb报错
这个原因是在MYSQL5.5及以后版本中type=InnoDB 由ENGINE=InnoDB 代替. 解决办法,自己定义一个方言: package com.hotusm.dialect; /** * ...
- AFNetworking 3.1
听说之后AFHttpWorking版本可能会影响到苹果的审核,今天下了最新版本的AFHttpWorking,并且做了简单的封装,我这里是通过cocoapods下载了两个工具 1=AFHttpWorki ...
- Scalaz(55)- scalaz-stream: fs2-基础介绍,fs2 stream transformation
fs2是scalaz-stream的最新版本,沿用了scalaz-stream被动式(pull model)数据流原理但采用了全新的实现方法.fs2比较scalaz-stream而言具备了:更精简的基 ...
- python读取文件的前几行
文件内容rolling.txt: There's a fire starting in my heart 我怒火中烧 Reaching a fever pitch and it's bringing ...
- python爬虫技术的选择
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica } span.s1 { } 本篇文章不是入门帖,需要对python和爬虫领 ...
- 【GOF23设计模式】观察者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_观察者模式.广播机制.消息订阅.网络游戏对战原理 package com.test.observer; import ja ...
- 【HTML】字符(Glyphs)收集
Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022& ...