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.^

select name from student where name REGEXP ‘^x‘; --查询以x开头的数据

2.$

select * from student where name REGEXP ‘c$‘; --查询以c结尾的数据

3.".":这个字符就是英文下的点,它匹配任何一个字符,包括回车、换行等。

select * from student where name REGEXP ‘x..‘; --匹配首字母为x,其余字母任意的数据

4.*:星号匹配0个或多个字符,在它之前必须有内容。

select * from student where name REGEXP ‘x*‘; --匹配任意个字符

5."+":加号匹配1个或多个字符,在它之前也必须有内容。

select * from student where name REGEXP ‘x*‘;--匹配大于1个的任意字符

6."?":问号匹配0次或1次。

select * from student where name REGEXP ‘x?‘;--匹配0个或1个字符

7.xzb|spal|

select * from student where name REGEXP ‘xzb|spal‘;--匹配xzb或spal

8.[x-z]*

select * from student where name REGEXP ‘^[x-z]‘;--匹配以x,y,z中的字符开头的数据

select * from student where name REGEXP ‘[a-d]$‘;--匹配以a-d中的字符结尾的数据

9.[^x-z]*

select * from student where name REGEXP ‘^[^x-z]‘;--匹配不在x-z内的字符开头的数据

select * from student where name REGEXP ‘[^h-j]$‘;--匹配不在x-z内的字符开头的数据

10.{n}

select * from student where name REGEXP ‘^s{2}‘;--匹配以s开头且重复至少2次的所有数据

11.{n,m}

select * from student where name REGEXP ‘^s{2,5}‘;--匹配以s开头且重复2到5次的所有数据

时间: 2024-10-20 05:29:28

mysql中正则表达式的使用的相关文章

MySQL的正则表达式

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

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之正则表达式(REGEXP)

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

在MySQL中使用正则表达式

在MySQL中的REGEXP函数可以在平时使用SQL时匹配正则表达式,在平时在使用一些查询条件时可以使用REGEXP函数来匹配相应的字符从而可以替代很多自己不太熟悉或者是不了解的SQL函数且通用,从而提高日常的工作效率,在MySQL下的REGEXP函数使用十分简单,正则表达式的元字符可以参看:http://jim123.blog.51cto.com/4763600/1850919,REGEXP函数返回值是布尔值0和1,即,匹配为1,不配为0,如: mysql> SELECT 'Monty!' R

MySQL中的正则表达式

正则表达式是用正则表达式语言来建立 基本字符的匹配 .是正则表达式语言中的一个特殊的字符,它表示匹配任意一个字符 在LIKE和REGEXP之间有一个重要的差别,LIKE匹配整个列,如果被匹配的文本仅在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符) 而REGEXP在列值内匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行也会被返回. MySQL中的正则表达式匹配默认不区分大小写,为区分大小写,可使用BINARY关键字,在REGEXP后面加上BINARY即

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

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

如何在MySQL中获得更好的全文搜索结果

很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录.在后台,这些程序使用在一个SELECT 查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候. mysql针对这一问题提供了一种基于内建的全文查找方式的解决方案.在此,开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜

mysql中的模糊查询

转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2种通配符:“_”和“%”.“_”匹配任意单个字符,而“%”匹配任意多个字符(包括0个).举例如下: SELECT * FROM table_name WHERE column_name LIKE ‘m%’; #查询

mysql中用户权限导出的脚本

MySQL数据库备份和迁移,是DBA日常工作中,经常需要做的工作.备份一般由物理备份和逻辑备份两种,对于用xtrabackup进行物理备份来说,表数据和用户权限都会全部备份和恢复:如果是逻辑备份的话,用户数据和授权信息都需要单独的导出导入,用户数据直接用 mysqldump 工具导出导入即可,但mysql中用户权限不能直接导出导入,一个权限一个权限的处理,有比较麻烦. 所以编写一个mysql用户权限脚本,对源数据库中的用户授权信息进行导出,就非常必要了.只要有用户权限的授权sql,不论是平时备份