SQL语言之正则表达式regexp的用法

正则表达式regexp基本可以称得上初学SQL查询语言中最没有存在感的了,它没有like那么好理解,没有数学运算符那么简单,没有 in,between and,is(not)null存在感那么强,不过偶尔casual也会突然有那么一两种场景,让你把regexp拿过来救命。

话不多说。

我的前几篇没有人看的文章中总结了查询语言的大框架,因为没有人会特意再找一遍所以我把它拿过来:

select 查询内容 from 能得到查询内容的表 where 筛选条件 group  by 分组字段 having 最终筛选条件。

首先必须声明一点,where的筛选条件必须是你所查的表里面有的,having的筛选条件,是已经得到查询结果了,想从查询结果里再进一步筛选,他们之间的筛选对象是不同的,大家别整混了。

回到今天的主题,正则表达式,正则表达式作为筛选条件,可以用在where后面,也可以用在having后面。然后就说说正则表达式的用法:

字段名 regexp 正则表达式:意思是,获取字段中满足正则表达式的行信息。正则表达式里都能写啥,代表的都是啥意思,咱们往后看:

1、字段名 regexp '^河北':获取前两个字是河北的字段信息

2、字段名 regexp'^(河北|山西)':获取前两个字是河北或山西的字段信息

3、字段名 regexp '^.{2}$':获取字段信息占两个字符的字段信息

4、字段名 regexp '合':获取包含‘合’字的字段信息

5、字段名 regexp '^[a-z]$':获取以英文小写字母开头并且只包含小写字母的字符串,注意[a-z]不是a减z,是a至z。

前面的字段名后面就都不写了

6、^:表示一个字符串或行的开头

7、[a-z]:表示一个字符范围,匹配从 a 到 z 的任何字符。

8、  [0-9]:表示一个字符范围,匹配从 0 到 9 的任何字符。

9、[a-zA-Z]:这个变量匹配从 a 到 z 或 A 到 Z 的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。

10、 [^a-z]:这个变量匹配不在 a 到 z 范围内的任何字符。请注意,字符 ^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。

11、[a-z]*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。

12、[a-z]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。

13.:匹配任意一个字符。

14、\.:表示句点字符。请注意,反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,你需要转义反斜杠本身,因此需要使用\\.。

15、$:表示一个字符串或行的结尾。

6-15抄一下力扣,没人会介意吧。标一下出处,万一以后我火了力扣要我赔钱就不好了。。
链接:https://leetcode.cn/problems/find-users-with-valid-e-mails/solutions/2366182/cha-zhao-yong-you-you-xiao-you-xiang-de-gn7ym/

差不多就这些了
下面看个题

SQL语言之正则表达式regexp的用法_第1张图片

代码如下

# Write your MySQL query statement below
select 
*
from
Users
where
mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';
  • ^:这个符号表示字符串的开始。
  • [a-zA-Z]:这个部分匹配任何单个字母,无论大小写。
  • [a-zA-Z0-9_.-]:这个部分匹配任何数量(包括零个)的字母,数字,下划线,点或破折号。星号表示前面的字符可以出现任意次数。
  • \@leetcode\.com:这个部分匹配"@leetcode.com"字符串。在这里,\用于转义特殊字符@和.,使它们被视为普通字符而不是正则表达式的特殊符号。
  • $:这个符号表示字符串的结束。

又水一天

你可能感兴趣的:(sql,正则表达式,数据库)