当前位置:  开发笔记 > 数据库 > 正文

T-SQL:检查电子邮件格式

如何解决《T-SQL:检查电子邮件格式》经验,为你挑选了2个好方法。

我有这种情况,我需要物理数据库中的数据完整性.例如,我有一个变量,@email_address VARCHAR(200)我想检查是否@email_address是电子邮件格式的值.任何人都知道如何在T-SQL中检查格式?

非常感谢!



1> splattne..:

我使用许多不同的错误和有效的电子邮件地址测试了以下查询.它应该做的工作.

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'

它会检查以下条件:

没有嵌入空间

'@'不能是电子邮件地址的第一个字符

'' 不能是电子邮件地址的最后一个字符

必须有'.' '@'之后的某个地方

允许使用'@'标志

域名最后应至少包含2个字符的扩展名

不能有像'.@'和'..'这样的模式



2> annakata..:

AFAIK没有好办法做到这一点.

电子邮件格式标准是如此复杂的解析器已知可以运行到数千行代码,但即使您使用更简单的形式,这将失败一些不起眼但有效的地址,您必须在没有正则表达式的情况下执行此操作T-SQL本身不支持(再次,我不是百分之百),让你有一些简单的回退,如:

LIKE '%_@_%_.__%'

..或类似的.

我的感觉通常是你不应该在最后可能的时刻这样做(当你插入数据库时​​)你应该在第一次机会和/或公共网关(实际进行SQL插入的控制器)时这样做请求),顺便说一句,你会有正则表达式的优势,甚至可能是一个为你做"真正"验证的库.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有