教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 深入解析MySQL的正则表达式查询匹配

深入解析MySQL的正则表达式查询匹配

发布时间:2015-12-13   编辑:jiaochengji.com
本文介绍下,有关mysql中的正则表达式匹配,用正则可以实现复杂查询。有需要的朋友,参考下吧。

1,Mysql的正则表达式,是SQL语言的一个子集,可以匹配基本的字符、字符串。
例如:
 

复制代码 代码示例:
select * from wp_posts where post_name REGEXP 'hello'
 

以上检索出列post_name中所有包含hello的行
REGEXP '.og'  .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。

注意:
LIKE和REGEXP的区别:
LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。
而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可
以实现REGEXP匹配整个列而不是列的子集)。

关于大小写的区分:
MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写 。
如果要区分大小写,应该使用BINARY关键字,如

复制代码 代码示例:
where post_name REGEXP BINARY 'Hello .000'

2,关于OR匹配
为了搜索两个串之一,使用|, 如,

复制代码 代码示例:
select * from products where pro_id REGEXP '1000|2000'  ORDER BY pro_id;
 

这样就1000和2000都能匹配并返回,当然,使用多个|就可以匹配多个串。

3,只是匹配几个字符[]
例如,这样将要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意字母字符
如:

复制代码 代码示例:
SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

4,匹配特殊字符使用\进行转义
\\.能够匹配.
\\f换页
\\n换行
  \\r回车
\\t制表
\\纵向制表

注意:为了匹配\本身,需要使用\\\

5,匹配字符类
[:alnum:]任意字母和数字(通[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
 [:blank:]空格和制表符(同[\\t])
 [:digit:] 任意数字(同[0-9])
 [:lower:]  任意小写字母
 [:upper:]   任意大写字母
 [:space:]   包括空格在内的任意空白字符

6,匹配多个实例,关于重复元字符
*  0个或者多个匹配
+ 1个或者多个匹配(等于{1,})
? 1个或者多个匹配(等于{0,1})
{n}指定数目的匹配
{n,}   不少于指定数目的匹配
{n,m}匹配数目的范围(m不超过255)

例子:
select prod_name from products where prod_name REGEXP '[[:DIGIT:]]{4}'
[:digit:]匹配任意素子,因而它为数字的一个几何。
{4}确切的要求它前面的字符(任意数字)出现3此,所以[[:digit:]]{4}匹配连在一起的任意4位数字。
当然,上面的例子也可以写成:REGEXP '[0-9][0-9][0-9][0-9]'

7,定位符
^  文本的开始
&  文本的结尾
[[:<:]]   词的开始
[[:>:]]   词的结尾
通过使用这些定位符,能够使REGEXP起类似LIKE的作用。

有关mysql中使用正则表达式进行匹配的内容,就介绍这些吧,希望对大家有所帮助。

您可能感兴趣的文章:
深入解析MySQL的正则表达式查询匹配
解析mysql字符串模式匹配与扩展正则表达式模式匹配
mysql模糊查询举例及%的用法要点
MySql正则表达式的用法实例分享
Python re正则表达式模块及其用法
正则表达式在网络编程中的运用
mysql正则匹配模糊查询的例子
正则表达式详细基础实例解析
常用正则表达式的例子
通过实例学习php正则表达式之正则处理函数(preg_match,preg_match_all,preg_replace,preg_split)

[关闭]
~ ~