gpt4 book ai didi

使用正则表达式的 SQL 电子邮件验证功能

转载 作者:行者123 更新时间:2023-12-04 14:14:55 25 4
gpt4 key购买 nike

我正在尝试在 SQL Server 2005 中创建一个函数来检查电子邮件是否采用带有正则表达式的有效格式。

这是我到目前为止所拥有的:

CREATE FUNCTION isValidEmailFormat
(
@Email varchar(100)
)
RETURNS bit
AS
BEGIN
DECLARE @Result bit

SET @Result = (SELECT CASE
WHEN @Email LIKE '%[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+ (com|org|edu|nz|au])%'
THEN 1
ELSE 0
END AS Valid)
RETURN @Result
END

我的正则表达式有问题吗?或者我是否需要做更多的事情来比较 varchar 和正则表达式?

-编辑-

现在,我输入的任何字符串都会返回 0,即使电子邮件格式本身是正确的。

最佳答案

简短的回答是不,这是不可能的。 LIKE 的语法与正则表达式不同(并且功能不如正则表达式)。另见 SQL Server Regular expressions in T-SQL

但是您可以跳转到 .Net 并在那里进行匹配。您可以实例化 VBScript.RegExp在 T-SQL 中使用 sp_OACreate并使用它。

CREATE FUNCTION dbo.isValidEmailFormat
(
@Email varchar(100)
)
RETURNS bit
AS
BEGIN
DECLARE @pattern varchar(4000)
SET @pattern = '[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)'
DECLARE @Result bit

DECLARE @objRegexExp INT
EXEC sp_OACreate 'VBScript.RegExp', @objRegexExp OUT

EXEC sp_OASetProperty @objRegexExp, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
EXEC sp_OASetProperty @objRegexExp, 'MultiLine', 0
EXEC sp_OASetProperty @objRegexExp, 'Global', false
EXEC sp_OASetProperty @objRegexExp, 'CultureInvariant', true

EXEC sp_OAMethod @objRegexExp, 'Test', @Result OUT, @Email

EXEC sp_OADestroy @objRegexExp

RETURN @Result
END

请看一眼 Regex email verification error - using JavaScript看看你是否想对允许使用的字符少一点限制。

关于使用正则表达式的 SQL 电子邮件验证功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15523789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com