我有一个需要在物理数据库中保证数据完整性的场景。例如,我有一个变量
非常感谢!
@email_address VARCHAR(200)
,我想检查@email_address
的值是否符合电子邮件格式。有人知道如何在T-SQL中检查格式吗?非常感谢!
@email_address VARCHAR(200)
,我想检查@email_address
的值是否符合电子邮件格式。有人知道如何在T-SQL中检查格式吗?我使用许多不正确和有效的电子邮件地址测试了以下查询。它应该能够完成工作。
IF (
CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0
AND LEFT(LTRIM(@email_address),1) <> '@'
AND RIGHT(RTRIM(@email_address),1) <> '.'
AND CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address ) > 1
AND LEN(LTRIM(RTRIM(@email_address ))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3
AND (CHARINDEX('.@',@email_address ) = 0 AND CHARINDEX('..',@email_address ) = 0)
)
print 'valid email address'
ELSE
print 'not valid'
它检查以下条件:
LIKE '%_@_%_.__%'
我的感觉通常是,你不应该在最后一刻(插入到数据库时)才进行此操作,而应该在第一时间和/或一个公共网关(实际上发出SQL插入请求的控制器)进行操作。在那里,你将拥有正则表达式的优势,甚至可能会有一个为你执行“真正”验证的库。