mysql 正则表达式
来源:互联网 发布:ubuntu 文件权限设置 编辑:程序博客网 时间:2024/06/14 06:05
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)
在select中类似下面使用,结果:匹配返回1,不匹配返回0
select "fo" REGEXP "^fo$"
扩展正则表达式的一些字符:
'.' 匹配任何单个的字符。
[...] 匹配在方括号内的任何字符。例如,"[abc]"匹配"a"、"b"或"c"。为了命名字符的范围,使用一个"-"。"[a-z]"匹配任何字母,而"[0-9]"匹配任何数字
" * " 匹配零个或多个在它前面的字符。例如,"x*"匹配任何数量的"x"字符,"[0-9]*"匹配任何数量的数字,而".*"匹配任何数量的任何字符
"^"\"$" 匹配被测试值的开始\结尾
{m[,n]} 内只有一个整型参数m,表示字符只能出现m次;
后面跟一个",",表示字符可以出现m次及以上;
后面跟一个",n",表示字符只能出现m次及以上,n次及以下 ;
其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255) 如果同时给定了m和n,m必须小于或等于n.
[a-dX]
[^a-dX]
匹配任何是(或不是,如果使用^的话)a、b、c、d或X的字符。两个其他字符之间的"-"字符构成一个范围,与从第1个字符开始到第2个字符之间的所有字符匹配。
例如,[0-9]匹配任何十进制数字 。
要想包含文字字符"]",它必须紧跟在开括号"["之后。
要想包含文字字符"-",它必须首先或最后写入。
对于[]对内未定义任何特殊含义的任何字符,仅与其本身匹配。
BINARY 想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串
在select中类似下面使用,结果:匹配返回1,不匹配返回0
select "fo" REGEXP "^fo$"
扩展正则表达式的一些字符:
'.' 匹配任何单个的字符。
[...] 匹配在方括号内的任何字符。例如,"[abc]"匹配"a"、"b"或"c"。为了命名字符的范围,使用一个"-"。"[a-z]"匹配任何字母,而"[0-9]"匹配任何数字
" * " 匹配零个或多个在它前面的字符。例如,"x*"匹配任何数量的"x"字符,"[0-9]*"匹配任何数量的数字,而".*"匹配任何数量的任何字符
"^"\"$" 匹配被测试值的开始\结尾
{m[,n]} 内只有一个整型参数m,表示字符只能出现m次;
后面跟一个",",表示字符可以出现m次及以上;
后面跟一个",n",表示字符只能出现m次及以上,n次及以下 ;
其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255) 如果同时给定了m和n,m必须小于或等于n.
[a-dX]
[^a-dX]
匹配任何是(或不是,如果使用^的话)a、b、c、d或X的字符。两个其他字符之间的"-"字符构成一个范围,与从第1个字符开始到第2个字符之间的所有字符匹配。
例如,[0-9]匹配任何十进制数字 。
要想包含文字字符"]",它必须紧跟在开括号"["之后。
要想包含文字字符"-",它必须首先或最后写入。
对于[]对内未定义任何特殊含义的任何字符,仅与其本身匹配。
BINARY 想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'
#为了找出以"fy"结尾的名字,使用"$"匹配名字的结尾: mysql> SELECT * FROM pet WHERE name REGEXP 'fy$'; +——–+——–+———+——+————+——-+ | name| owner | species | sex | birth | death | +——–+——–+———+——+————+——-+ | Fluffy | Harold | cat| f | 1993-02-04 | NULL | | Buffy | Harold | dog| f | 1989-05-13 | NULL | +——–+——–+———+——+————+——-+ #为了找出包含正好5个字符的名字,使用"^"和"$"匹配名字的开始和结尾,和5个"."实例在两者之间:mysql> SELECT * FROM pet WHERE name REGEXP '^.....$'; +——-+——–+———+——+————+——-+ | name | owner | species | sex | birth | death | +——-+——–+———+——+————+——-+ | Claws | Gwen| cat| m | 1994-03-17 | NULL | | Buffy | Harold | dog| f | 1989-05-13 | NULL | +——-+——–+———+——+————+——-+ #你也可以使用"{n}""重复n次"操作符重写前面的查询:mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; +——-+——–+———+——+————+——-+ | name | owner | species | sex | birth | death | +——-+——–+———+——+————+——-+ | Claws | Gwen| cat| m | 1994-03-17 | NULL | | Buffy | Harold | dog| f | 1989-05-13 | NULL | +——-+——–+———+——+————+——-+select "fonfo" REGEXP "^fo$";
#例子:# 查找srv_keyword最后一个逗号','后的字符串,是null或者是以P-开头的,然后这部分删掉# 如:专服务,规划类服务,P-1605061 | 专服务,规划类服务,null结果都应该是:专服务,规划类服务# mysql找最后一个符号的位置没有直接的函数,用反转函数reverse间接实现select product_name ,base_product_name ,srv_keyword ,REVERSE(substring(REVERSE(srv_keyword),LOCATE(',',REVERSE(srv_keyword))+1))from srvwhere srv_keyword not like CONCAT("%",product_id,"%")and srv_keyword REGEXP ',(null|(P-.*))$'
0 0
- MySQL正则表达式
- mysql 正则表达式
- MySQL正则表达式
- MySQL正则表达式
- mysql 正则表达式查询
- MySQL正则表达式
- mysql 正则表达式手册
- MySQL的正则表达式
- mysql 正则表达式
- MySQL正则表达式
- MySQL的正则表达式
- mysql 正则表达式
- mysql的正则表达式
- mysql正则表达式总结
- MySQL正则表达式
- mysql 正则表达式
- MySQL正则表达式初步
- Mysql数据库正则表达式
- 学习工具的使用
- 194. Transpose File
- 学习mysql的第三天
- 总结
- C++ auto 用法
- mysql 正则表达式
- hdu1233 - 还是通畅工程(最小生成树)
- Android蓝牙源码分析——Gatt写设备
- Android中的消息机制与异步任务
- maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别
- shell for 循环
- 如何用C语言实现带参数的dos命令?
- spring官网下载pdf说明文档
- 字符串倒序输出(一道笔试题),2种方法,指针/malloc,strcpy