如何检测句点是否在字符串的开头?

时间:2011-11-09 14:48:51

标签: sql-server sql-server-2008 tsql

我有这个查询从我们的数据库中提取电子邮件地址。有很多垃圾数据,所以我只想查看有效的电子邮件地址。这是我的语法:

    SELECT DISTINCT Email
FROM         dbo.Customers
WHERE     (Email IS NOT NULL) 
AND (Email LIKE '%@%') 
AND (RIGHT(Email, 4) IN ('.net', '.com', '.org')) 
AND (Email NOT LIKE '%@UniformCity.com') 
AND (Email NOT LIKE '%@LifeUniform.com') 
AND (RIGHT(RTRIM(Email), 1) <> '.') AND (LEFT(LTRIM(Email), 1) <> '@')  --first character not @
AND (Email not Like '%[`:;_*-,()+%\/=#-]%') order by Email

我想检测电子邮件开头的句点。另外作为奖励,如何在没有搞砸的情况下告诉我的声明寻找“[”?

3 个答案:

答案 0 :(得分:3)

怎么样

AND (CHARINDEX('.', Email) <> 1)

对于[],您可以更改转义字符吗?

AND (Email not Like '%[`:;_*-,^[^]()+%\/=#-]%' ESCAPE '^')

http://msdn.microsoft.com/en-us/library/ms179859.aspx

答案 1 :(得分:1)

答案 2 :(得分:0)

您是否希望使用T-SQL执行此操作?如果是这样,SQL Server的版本是什么? (从你的标签我假设SQL Server 2008)

为您提问..为什么不对数据库运行程序来擦除它?提取所有电子邮件地址,使用正则表达式确定每个地址是否有效,并标记(或删除)无效地址。

*更新:我同意Christian Hayter的看法! *