sql数据库查询操作(使用正则表达式)

文章2021-12-03471 人已阅来源:雪花飘满地

1.正则表达式通常用来检索或者是替换那些符合某个模式的文本的内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。

2.使用正则表达式进行基本的查询

(1)查询一特定的字符或者是字符串开头的记录

语法:字符‘^’匹配以特定的字符或者是字符串开头的文本;

select * from test where name regexp '^s';

(2)查询以特定的字符或者是字符串结尾的记录

语法:字符‘$’匹配以特定的字符或者是字符串结尾的文本

select * from test where name regexp '$1';

(3)用符号.来替代字符串中的任意的一个字符

语法:字符.匹配任意的一个字符

select *from test where regexp 's.1';

(4)使用‘*’和'+'来匹配多个字符

语法:符号‘*’匹配前面的字符任意多次,包括0次,+匹配前面的字符至少一次;

select * from test where name regexp '^ba';

select * from test where name regexp '^ba+';

(5)匹配指定的字符串

语法:正则表达式可以匹配指定的字符串,只要这个字符串在查询文本中即可,如果需要匹配多个字符串的时候,多个字符串之间使用分隔符‘|’隔开;

select * from test where name regexp 's|sd';

说明:like运算符也可以匹配指定的字符串,但是与regexp不同,like匹配的字符串如果在文本中出现,则找不到他;相应的行也不会返回,而regexp在文本内进行匹配,如果被匹配的出现在文本中,regexp会找到他,相应的行也会被返回。

(6)匹配指定字符串中的任意一个

语法:[]是一个字符集合,只匹配其中任何一个字符,即为查找的文本;

select * from text where regexp '[sdc]';

(7)匹配指定的字符以外的字符;

语法:[^字符集合]匹配不在指定集合中的任何字符;

select * from test where regexp '[^sdc]';

说明:在使用正则表达式的时候,我们一定要明确我们的查询语句有没有相同或者是有类似的模型,这个样子我们就可以通过使用正则表达式进行模式的替换,简化SQL查询语句的编写。