Sql server中的电子邮件地址验证问题
我正在使用以下查询Sql server中的电子邮件地址验证问题,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我正在使用以下查询 SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%' 从中引用以验证电子邮件地址 查询在所有情况下都能正常工作,除非电子邮件因空格而无效。 例如,以下无效的电子邮件地址值的查询失败。 @ . 我们能用之类的语句找到有空格的列吗?电子邮件验证充其量只是一个毛茸茸的练习。至少,我会用第三种语言的书面形式进行验证。请注意: 在代码中验证电子邮件地址几乎是不可能的 您可以使用函数和函数: Select Id,
SELECT *
FROM people
WHERE email NOT LIKE '%_@__%.__%'
从中引用以验证电子邮件地址
查询在所有情况下都能正常工作,除非电子邮件因空格而无效。
例如,以下无效的电子邮件地址值的查询失败。
@ .
我们能用之类的语句找到有空格的列吗?电子邮件验证充其量只是一个毛茸茸的练习。至少,我会用第三种语言的书面形式进行验证。请注意:
在代码中验证电子邮件地址几乎是不可能的
您可以使用函数和函数:
Select
Id,
Email
From
MyTable
Where
LEN(Email) <> LEN(REPLACE(Email,' ', ''))
选择
身份证件
电子邮件
从…起
我的桌子
哪里
LEN(电子邮件)LEN(替换(电子邮件)
查看您使用的是MySQL还是MSSQL?通常有一个比数据库更合适的层来进行电子邮件验证。使用模式匹配(无论是simple还是regex)进行电子邮件验证通常是有缺陷的。接受任何带有@
的邮件,如果您想获得更多的保证,确保电子邮件地址有效的唯一方法就是尝试使用它。我使用的是Sql server 2012,即mysql
,sqlite
和sql-server-2008
标记当时都被错误地应用了?感谢您的纠正,从那些电子邮件不像“%”的人那里选择*。“%”查询在几乎所有情况下都可以正常工作,除了有空格的情况。我在想,如果我可以验证空格,那么我将使用多个查询来验证电子邮件地址,这将涵盖几乎所有的场景。为什么不使用trim
,然后稍后应用查询?我需要检查该列是否有空格。修剪不会起作用。这真的应该是一个评论。很抱歉,用户们。