SQL 中的 REGEXP
运算符是一个强大的工具,用于匹配复杂的字符串模式。它用于根据特定模式而不是简单的字符匹配来提取信息。
示例
SELECT *
FROM Orders
WHERE item REGEXP 'Mouse|Keyboard';
这里,SQL 命令选择项目是 Mouse
或 Keyboard
的订单。
带有 WHERE 子句的 SQL REGEXP
REGEXP
运算符可以与 WHERE
子句有效地结合使用,以进行精确的模式匹配。例如,
SELECT *
FROM Customers
WHERE first_name REGEXP '^J';
这里,SQL 命令返回名字以 J 开头的客户。
注意: 我们的在线编译器基于 SQLite,默认不支持 REGEXP
运算符。
UPDATE 语句中的 REGEXP
REGEXP
运算符也可以用于 UPDATE 语句,以根据复杂模式修改数据。例如,
UPDATE Shippings
SET status = 'Processing'
WHERE status REGEXP 'Pending|Delivered';
SELECT * FROM Shippings;
此 SQL 命令将 Shippings 表中状态为 Pending 或 Delivered 的发货的 status 列更新为 Processing。
链式 REGEXP 运算符
可以链式使用多个 REGEXP
运算符进行复杂模式匹配。例如,
SELECT *
FROM Customers
WHERE country
REGEXP 'USA|UK' AND age REGEXP '2[0-9]';
此查询查找来自 USA 或 UK 且年龄在二十多岁的客户。
使用 SQL REGEXP 验证电子邮件地址
使用 SQL 的 REGEXP
运算符,我们可以根据标准电子邮件格式规则验证电子邮件地址。
让我们看一个例子。
SELECT * FROM Customers
WHERE email
REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$';
这里的 REGEXP
模式分解如下
^[A-Za-z0-9._%+-]+
- 电子邮件必须以一个或多个字母数字字符、点、下划线、百分号、加号或连字符开头。@
- 这是电子邮件地址中强制性的 at 符号。[A-Za-z0-9.-]+
- 在 at 符号之后,电子邮件必须包含一个或多个字母数字字符、点或连字符。\.[A-Za-z]{2,4}$
- 电子邮件必须以一个句点结尾,后跟 2 到 4 个字母字符,表示域名部分。