Sql脚本来查找无效的电子邮件地址
数据导入是从访问数据库完成的,并且在电子邮件地址字段中没有验证。 有没有人有一个SQL脚本,可以返回一个无效的电子邮件地址列表(缺少@等)。
谢谢!
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
任何更复杂的事情都可能会导致错误的否定,并且运行得更慢。
验证代码中的电子邮件地址几乎是不可能的。
编辑:相关问题
这是一个快速简单的解决方案:
CREATE FUNCTION dbo.vaValidEmail(@EMAIL varchar(100))
RETURNS bit as
BEGIN
DECLARE @bitRetVal as Bit
IF (@EMAIL <> '' AND @EMAIL NOT LIKE '_%@__%.__%')
SET @bitRetVal = 0 -- Invalid
ELSE
SET @bitRetVal = 1 -- Valid
RETURN @bitRetVal
END
然后你可以使用这个函数找到所有的行:
SELECT * FROM users WHERE dbo.vaValidEmail(email) = 0
如果您对在数据库中创建函数不满意,可以直接在查询中使用LIKE子句:
SELECT * FROM users WHERE email NOT LIKE '_%@__%.__%'
资源
我发现这个简单的T-SQL查询对于返回有效的电子邮件地址很有用
SELECT email
FROM People
WHERE email LIKE '%_@__%.__%'
AND PATINDEX('%[^a-z,0-9,@,.,_]%', REPLACE(email, '-', 'a')) = 0
PATINDEX位消除包含不在允许的az,0-9,'@','。','_'和' - '字符集中的字符的所有电子邮件地址。
它可以颠倒,做你想这样做:
SELECT email
FROM People
WHERE NOT (email LIKE '%_@__%.__%'
AND PATINDEX('%[^a-z,0-9,@,.,_]%', REPLACE(email, '-', 'a')) = 0)
链接地址: http://www.djcxy.com/p/92749.html