自学书籍.MySQL必知必会 - 用正则表达式进行搜索

正则表达式匹配:

1.正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串(^$)/文本子串进行比较

2.默认REGEXP不区分大小写,如果要区分大小写可用REGEXP BINARY来匹配

.             匹配任意一个字符

SELECT prod_name
FROM products
WHERE prod_name REGEXP '.000'
ORDER BY prod_name;

|              为搜索两个串之一

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;

[]             匹配字符集中的任意一个字符,如果要匹配除集合外的内容,在集合开始处放一个^即可,[0-9a-zA-Z]表示匹配0-9的数字,a-z小写字符,A-Z大写字符

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY prod_name;

\              特殊字符转义符,\\\匹配反斜线本身(\\是MYSQL解析成\,然后正则表达式解析\\为\),\\f换页,\\n换行,\\r回车,\\t制表,\\纵向制表

SELECT prod_name
FROM products
WHERE prod_name REGEXP '\\([0-9] sticks?\\)';

[[:alnum:]]    任意字母和数字

[[:alpha:]]    任意字符

[[:blank:]]    空格和制表符

[[:cntrl:]]    ASCII控制字符

[[:digit:]]    任意数字

[[:lower:]]    任意小写字符

[[:punct:]]    任意标点符号

[[:space:]]    任意空格在内的任意空白字符

[[:upper:]]    任意大写字符

[[:xdigit:]]   任意十六进制字

*              0个或是多个匹配

+              1个或是多个匹配

?              0个或是1个匹配

{n}            指定数目的匹配

{n,}           不少于指定数目的匹配

{n,m}          匹配数目的范围m不超过255

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[0-9]{4}';

^              匹配文本的开始

SELECT prod_name
FROM products
WHERE prod_name REGEXP '^[0-9\\.]';

$              匹配文本的结尾

[[:<:]]        匹配单词的开始

[[:>:]]        匹配单词的结束

你可能感兴趣的:(自学书籍.MySQL必知必会 - 用正则表达式进行搜索)