cam*_*mpo 61 sql email validation
数据导入是从访问数据库完成的,电子邮件地址字段没有验证.有没有人有一个可以返回无效电子邮件地址列表的sql脚本(缺少@等).
谢谢!
Tom*_*lak 150
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
Run Code Online (Sandbox Code Playgroud)
任何更复杂的东西都可能会返回漏报并且运行得更慢.
在代码中验证电子邮件地址几乎是不可能的.
编辑:相关问题
Esp*_*spo 19
这是一个快速简便的解决方案:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下函数查找所有行:
SELECT * FROM users WHERE dbo.vaValidEmail(email) = 0
Run Code Online (Sandbox Code Playgroud)
如果您对在数据库中创建函数不满意,可以直接在查询中使用LIKE子句:
SELECT * FROM users WHERE email NOT LIKE '_%@__%.__%'
Run Code Online (Sandbox Code Playgroud)
我发现这个简单的T-SQL查询对于返回有效的电子邮件地址非常有用
SELECT email
FROM People
WHERE email LIKE '%_@__%.__%'
AND PATINDEX('%[^a-z,0-9,@,.,_]%', REPLACE(email, '-', 'a')) = 0
Run Code Online (Sandbox Code Playgroud)
PATINDEX位删除所有包含不在允许的az,0-9,'@','.','_'和' - '字符集中的字符的电子邮件地址.
它可以反过来做你想要的这样:
SELECT email
FROM People
WHERE NOT (email LIKE '%_@__%.__%'
AND PATINDEX('%[^a-z,0-9,@,.,_]%', REPLACE(email, '-', 'a')) = 0)
Run Code Online (Sandbox Code Playgroud)
小智 5
select
email
from loginuser where
patindex ('%[ &'',":;!+=\/()<>]*%', email) > 0 -- Invalid characters
or patindex ('[@.-_]%', email) > 0 -- Valid but cannot be starting character
or patindex ('%[@.-_]', email) > 0 -- Valid but cannot be ending character
or email not like '%@%.%' -- Must contain at least one @ and one .
or email like '%..%' -- Cannot have two periods in a row
or email like '%@%@%' -- Cannot have two @ anywhere
or email like '%.@%' or email like '%@.%' -- Cant have @ and . next to each other
or email like '%.cm' or email like '%.co' -- Unlikely. Probably typos
or email like '%.or' or email like '%.ne' -- Missing last letter
Run Code Online (Sandbox Code Playgroud)
这对我有用。必须应用 rtrim 和 ltrim 以避免误报。
来源:http : //sevenwires.blogspot.com/2008/09/sql-how-to-find-invalid-email-in-sql.html
Postgres 版本:
select user_guid, user_guid email_address, creation_date, email_verified, active
from user_data where
length(substring (email_address from '%[ &'',":;!+=\/()<>]%')) > 0 -- Invalid characters
or length(substring (email_address from '[@.-_]%')) > 0 -- Valid but cannot be starting character
or length(substring (email_address from '%[@.-_]')) > 0 -- Valid but cannot be ending character
or email_address not like '%@%.%' -- Must contain at least one @ and one .
or email_address like '%..%' -- Cannot have two periods in a row
or email_address like '%@%@%' -- Cannot have two @ anywhere
or email_address like '%.@%' or email_address like '%@.%' -- Cant have @ and . next to each other
or email_address like '%.cm' or email_address like '%.co' -- Unlikely. Probably typos
or email_address like '%.or' or email_address like '%.ne' -- Missing last letter
;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
151934 次 |
最近记录: |