Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server中的电子邮件地址验证问题_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

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
,然后稍后应用查询?我需要检查该列是否有空格。修剪不会起作用。这真的应该是一个评论。很抱歉,用户们。