当前位置:   article > 正文

数据库——正则表达式_数据库正则表达式

数据库正则表达式

MySQL仅支持多数正则表达式实现的一个很小的子集。这里列举MySQL支持的大多数内容!!!

1、基本字符匹配

#相当于like "%14%"
SELECT * FROM sys_dept WHERE ancestors REGEXP "14";
  • 1
  • 2

匹配不区分大小写,如果要区分大小写,可使用BINARY字段,即WHERE ancestors REGEXP BINARY “14”;

2、进行OR匹配

SELECT * FROM sys_dept WHERE ancestors REGEXP "14|15|1";
  • 1

3、匹配几个字符之一

SELECT * FROM sys_dept WHERE ancestors REGEXP "[145]";
  • 1

这里,[145]定义一组字符,它的意思是匹配1或4或5。
正如所见,[]是另一种形式的OR语句。事实上,正则表达式[145]为[1|4|5]Ton的缩写,也可以使用后者。但是,需要用[ ]来定义OR语句查找什么。
字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123]匹配字符1、2或3,但

[^123]

却匹配除这些字符外的任何东西。

4、匹配范围

集合可用来定义要匹配的一个或多个字符。例如,匹配数字0到9:[0-9]

SELECT * FROM products WHERE pro_dname REGEXP '[1-5]Ton';
  • 1

5、匹配特殊字符

为了匹配特殊字符,必须用\为前导。\-表示查找-,.表示查找.。
即所谓的转义
\也用来引用元字符,如下表

元字符说明
\\f换页
\\n换行
\\r回车
\\t指标
\\v纵向制表
  • 匹配
    为了匹配反斜杠()字符本身,需要使用\\。
  • \或\
    多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用这些字符本身。但 MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个)。

6、匹配字符类

常用的预定义字符集。

说明
[:alnum:]任意字母和数字(同[a-z|A-Z|0-9])
[:alpha:]任意字符(同[a-z|A-Z])
[:blank:]空格和制表(同[\\t])
[:cntrl:]ASCII控制字符(ASCII 0到31和127)
[:digit:]任意数字(同[0-9])
[:graph:]与[:print:]相同,但不包括空格
[:lower:]任意小写字母(同[a-z])
[:print:]任意可打印字符
[:punct:]既不在[:almm:]又不在[:cntrl:]中的任意字符
[:space:]包括空格在内的任意空白字符(同\\f\\n\\r\\t\\v])
[:upper:]任意大写字母(同[A-Z])
[:xdigit:]任.意十六进制数字(同[a-fA-F0-9])

7、匹配多个实例

可以使用正则表达式重复元字符来完成

元字符说明
*0个或多个匹配
+1个或多个匹配(等于{1,})
?0个或1个匹配 (等于{0,})
{n}指定数目的匹配
{n,}不少于指定数目的匹配
{n,m}匹配数目的范围(m不超过255)

例如:

REGEEXP '[[:digit:]]{4}'
  • 1

8、定位符

前面都是匹配一个串中任意位置的文本,使用下面定位符可以匹配特定位置的文本

元字符说明
^文本的开始
$文本的结尾
[[:词的开始
[[:>:]]词的结尾

例如:匹配一个以数字或者小数点开始的数

REGEXP '^[0-9\\.]'
  • 1
  • ^的双重用途
    两种用法,否定和串的开始处
  • 使REGEXP 起类似like的作用
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/520252
推荐阅读
相关标签
  

闽ICP备14008679号