作用:
匹配文本中特殊的串,在where子句中使用正则表达式来更好地过滤数据
like和regexp的区别:
like匹配整个列;
regexp在列值中匹配(它也可以使用^和$来匹配整个列值)。
MySQL正则表达式匹配不区分大小写:
为了区分,使用binary
.:表示匹配任意一个字符。
使用’|’进行or匹配:
例:
selete p_name
from product
where p_name regexp ‘1000|2000’
order by p_name;
使用”[]”,匹配几个字符之一:
[]是另一形式的or语句
selete p_name
from product
where p_name regexp ‘[123] ton’
order by p_name;
区分:where p_name regexp ‘1|2|3 ton’
1或2或3ton
^ :在集合的开头放置^,表示匹配除这些字符外任何东西,如:[^123]
-:定义范围,如:[0-9]、[a-z]
转义:匹配特殊字符:\作为前导,如:”\-“查找’-‘;”\.”查找’.’;”\\”查找’\’
注意:大多数正则表达式使用单个反斜杠转义特殊字符,但MySQL使用两个。
匹配多个:
元字符 | 说明 |
---|---|
* | 0个或多个 |
+ | 一个或多个 |
? | 0个或一个 |
{n} | 指定数目 |
{n,} | 不少于n个 |
{n,m} | n-m个 |
例:
selete p_name
from product
where p_name regexp ‘\[0-9] sticks?\)’
order by p_name;
\[0-9] sticks?\):两个”\”分别匹配‘(’’)’,sticks s后的?:?匹配它前面的字符0次或1次出现
例:
where p_name regexp ‘[[:digit:]]{4}’:匹配连在一起的4位数字
定位符:^:开始;$:结尾
以上,^有两种作用:
在集合中([和]定义),用来否定集合;
串的开始处;