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的作用

from: http://www.cnblogs.com/fuyunbiyi/archive/2012/03/29/2423489.html

时间: 2024-10-25 16:08:33

MySQL的正则表达式的相关文章

MYSQL使用正则表达式过滤数据

一.正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串.例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行 REGEXP'.og' .是正则表达式中里一个特殊的字符.它表示匹配一个字符,因此,dog,hog,mog等等都能匹配. 注意: 关于LIKE和REGEXP的区别:LIKE匹配整个列.如果被匹配的文本仅在列值中出现,LIKE并不

mysql中正则表达式的使用

mysql中正则表达式的性能要高于like,所以这里总结一下正则表达式的使用. 正则表达式的模式及其含义: 下面举例说明其用法: 建表student: create table student(id int(6) auto_increment,name carchar(6),age int(3),primary key(id)); 插入数据: insert into student(name,age) values('xzb',20),('spal',22),('wgc',32); 1.^ se

MySQL之正则表达式(REGEXP)

MySQL中正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文中符合要求的特殊字符串. 例如,从一个文件中提取电话号码,查找一篇文章中重复的单词或替换用户输入的敏感语汇等,这些地方都可以使用正则表达式.正则表达式强大而且灵活,常用于复杂的查询. MySQL 中使用 REGEXP 关键字指定正则表达式的字符匹配模式,下表列出了 REGEXP 操作符中常用的匹配列表. 选项 说明 例子 匹配值示例 ^ 匹配文本的开始字符 '^b' 匹配以字母 b 开头 的字符串 book

MySQL根据正则表达式批量删除表

最近在维护一个wordpress商城项目,商城是多站的,会为独立的站创建出几张表.项目在测试服务器上,貌似是被爬虫恶意注册,产生了几千个用户,就产生了几万张表,导致数据库导入导出都像蜗牛一样,慢得要死,所以就只能上服务器执行SQL删除了,先暂时关闭了注册的功能,由于注册貌似没有验证的条件造成的,然后就写了几条SQL语句删除这几万张多余的表. 首先用SSH登录了服务器,登录mysql数据库: mysql -uroot -proot 注:-u 后面为你的数据库用户名    -p后面为你的数据库密码

[MySQL] 用正则表达式进行搜索

正则表达式的作用就是匹配文本,讲一个模式(正则表达式)与一个文本串进行比较. 基本字符匹配 SELECT 列名 FROM 表名 WHERE 列名 REGEXP 条件 ORDER BY 列名; 形式与LIKE相同,只不过REGEXP后面跟的条件为正则表达式. 差别: LIKE匹配整个列.如果被匹配的文本在列值中出现,LIKE不会找到它,相应的行也不会被返回(除非使用通配符). REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP会找到它,相应的行将被返回. 正则表达式不区分大小

mysql 使用正则表达式查询

SELECT * FROM `qq` where qq_name!='no' and qq_gender='女' and qq_location!='no' and qq_location!='' and qq!=qq_name and LENGTH(qq_name)>4 and not(qq_name REGEXP '[u4e00-u9fa5]') order by id desc limit 60000; 原文地址:https://www.cnblogs.com/xuan52rock/p/8

mysql之正则表达式

原文地址:https://www.cnblogs.com/whylinux/p/9942093.html

MySQL 正则表达式

在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $

MySQL中REGEXP正则表达式使用大全

REGEXP在mysql是用来执行正则表达式的一个函数 像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使用like即可,但复杂的还是需要使用regexp了,下面我们来看看. MySql用户手册建议,在构造简单查询时,仍使用通配符. 如:Select [*|fieldname list] From [tablename] where [fieldname] like ["%someletter"|"%someletter%","_&