📅  最后修改于: 2023-12-03 15:36:15.726000             🧑  作者: Mango
在开发过程中,有时需要从SQL Server的表中提取电子邮件的域,例如 example.com
。本篇文章将介绍使用SQL脚本和正则表达式来提取电子邮件的域的方法。
我们将使用 SQL Server 中内置的 PATINDEX
函数和正则表达式来实现从电子邮件中提取域名的功能。
Contacts
,并插入一些示例数据。CREATE TABLE Contacts (
ContactID INT PRIMARY KEY,
Name VARCHAR(50),
Email VARCHAR(50)
);
INSERT INTO Contacts VALUES
(1, 'John Smith', 'john.smith@example.com'),
(2, 'Jane Doe', 'jane.doe@example.org'),
(3, 'Bob Johnson', 'bob.johnson@example.com'),
(4, 'Thomas Anderson', 'thomas.anderson@matrix.net');
PATINDEX
函数,该函数返回表达式中指定模式的第一个匹配项的起始位置。首先,使用正则表达式 '%@[_a-z0-9.-]+%'
获取电子邮件中的 @
符号和域名。然后,再使用 CHARINDEX
函数获取 @
符号的位置,并使用 SUBSTRING
函数截取域名。最后,使用 RIGHT
函数获取域名中 .
符号后面的字符串,即电子邮件的域名。SELECT
ContactID, Name, Email,
SUBSTRING(Email, PATINDEX('%@[_a-z0-9.-]%', Email) + 1,
CHARINDEX('.', RIGHT(Email, LEN(Email) -
PATINDEX('%@[_a-z0-9.-]%', Email))), LEN(Email)) AS Domain
FROM Contacts;
Contacts
表中提取电子邮件的域名。| ContactID | Name | Email | Domain |
| --------- | ----------------| ---------------------------| ---------- |
| 1 | John Smith | john.smith@example.com | example.com|
| 2 | Jane Doe | jane.doe@example.org | example.org|
| 3 | Bob Johnson | bob.johnson@example.com | example.com|
| 4 | Thomas Anderson| thomas.anderson@matrix.net | matrix.net |
通过以上步骤,我们已经成功从SQL Server表格中提取电子邮件的域名。本文介绍的方法基于 SQL 脚本和正则表达式,可以轻松地在各种应用场景中使用。