Как определить, находится ли точка в начале строки? - PullRequest
1 голос
/ 09 ноября 2011

У меня есть этот запрос, который извлекает адреса электронной почты из нашей БД. Существует много нежелательных данных, поэтому я хочу видеть только действующие адреса электронной почты. Вот мой синтаксис:

    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 ]

3 голосов
/ 09 ноября 2011

Как насчет

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

Для [], вы можете просто поменять escape-символ?

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

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

0 голосов
/ 09 ноября 2011

Вы хотите сделать это с помощью T-SQL?Если да, то какая версия SQL Server?(из ваших тегов я предполагаю, что SQL Server 2008)

Вопрос к вам .. почему бы не запустить программу на базе данных для ее очистки?Извлеките все адреса электронной почты, используйте регулярное выражение, чтобы определить, является ли каждый из них действительным, и пометьте (или удалите) недействительные адреса.

* ОБНОВЛЕНИЕ: Я согласен с Кристианом Хейтером!*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...