SQL正则表达式

发布时间 2024-01-10 00:40:46作者: 我是球啊

使用正则表达式

一般来说,如果被要求匹配一个字符串,应该首先会想到一个正则表达式模式进行匹配。

正则表达式提供各种功能:

1. ^:表示一个字符串或者行的开头

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

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

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

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

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

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

8. .:匹配任意一个字符

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

10. $:表示一个字符串或者行的结尾。

来看一道例题:

1517. 查找拥有有效邮箱的用户

1. 前缀名以字母开头:^[a-zA-Z]

2. 前缀名包含字母(大小写)、数字、下划线、句点、横杠:[a-zA-Z0-9\_\.\-]

3. 以域名'@leetcode.com'结尾:@leetcode\.com$

SELECT user_id, name, mail
FROM Users
-- 请注意,我们还转义了`@`字符,因为它在某些正则表达式中具有特殊意义
WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';