mysql必知必会 ——正则表达式

目的:在mysql where子句中使用正则表达式来更好的控制数据的过滤。

mysql必知必会 ——正则表达式_第1张图片

一.基本字符匹配:

1.检索name包含文本san的所有行:

        select * from test where name regexp 'san';

mysql必知必会 ——正则表达式_第2张图片

2.知道'.'是正则表达式语言中的一个特殊的字符,他表示匹配任意一个字符,

如:select * from test where name regexp '.0';

mysql必知必会 ——正则表达式_第3张图片

3.mysql中的正则表达式匹配不区分大小写,如要区分大小写可使用关键字:binary

如:不区分大小写:select * from test where name regexp 'hh';

mysql必知必会 ——正则表达式_第4张图片

区分大小写:select * from test where name regexp binary 'hh';


4.进行or匹配:select * from test where age regexp '2|3|12';  包含2或包含3或包含12

mysql必知必会 ——正则表达式_第5张图片

5.匹配特定字符:可通过指定一组用[和]括起来的字符完成:

select * from test where name regexp '[123]zh';    [123]意思是匹配1或2或3

mysql必知必会 ——正则表达式_第6张图片

二.匹配范围:

1.集合可以用来定义要匹配的一个或多个字符:

如:[0123456789]        匹配数字0到9 ; 也可使用-,如:[0-9]  意思一样。

同理[a-z] 匹配任意字母。

select * from test where name regexp '[a-z]d';   

mysql必知必会 ——正则表达式_第7张图片

三.匹配特殊字符

转义:使用\\进行转义。

如:1)匹配.   ,则为\\.    如:select * from test where name regexp '\\.';    name中包含.的记录。

mysql必知必会 ——正则表达式_第8张图片

    2)匹配|     ,用\\|   如:select * from test where name regexp '\\|';

     3) 匹配(  ,用\\(  如:select * from test where name regexp '\\(';

    3)匹配[]    ,用\\[    \\]    如:select * from test where name regexp '\\[*\\]';    *表示0个或多个匹配。


   4)匹配-     ,用\\-



四.匹配字符类

mysql必知必会 ——正则表达式_第9张图片

如:

    1)检索name字段中包含数字的记录:select * from test where name regexp '[[:digit:]]';

    mysql必知必会 ——正则表达式_第10张图片


五.匹配多个实例

mysql必知必会 ——正则表达式_第11张图片

1)使用*:         select * from test where name regexp '\\[*\\]';    *表示0个或多个匹配[。

2)使用?:  select * from test where name regexp 'zhs?';           

          s后的?使s可选,因为?匹配它前面的字符0次或多次。

mysql必知必会 ——正则表达式_第12张图片 

3)使用+:    select * from test where name regexp '\\.+';

mysql必知必会 ——正则表达式_第13张图片

mysql必知必会 ——正则表达式_第14张图片

4)使用{n,}

mysql必知必会 ——正则表达式_第15张图片

六.定位符

为了匹配特定位置的文本,需要使用下表中的定位符:

mysql必知必会 ——正则表达式_第16张图片

如:1)检索name以数字开头(文本开头)的记录:

 select * from test where name regexp '^[[:digit:]]';

mysql必知必会 ——正则表达式_第17张图片

2)检索name以n结尾(文本结尾)的记录:select * from test where name regexp 'n$';

mysql必知必会 ——正则表达式_第18张图片

3)检索以2开头的词的记录:

select * from test where name regexp '[[:<:]]2';

mysql必知必会 ——正则表达式_第19张图片

4)检索以d结尾的词的记录:

select * from test where name regexp 'd[[:>:]]';

mysql必知必会 ——正则表达式_第20张图片

你可能感兴趣的:(mysql)