Как получить записи, которые имеют только адреса электронной почты gmail, hotmail, Yahoo в SQL Server 2014?

У меня есть список записей в базе данных, которые имеют адреса электронной почты.

Я хотел бы получить записи, которые имеют только адреса электронной почты @gmail, @Hotmail и @Yahoo. Я также хочу, чтобы записи сортировались по доменному имени.

Мой код:

SELECT [AccountId]
      ,[FirstName]
      ,[LastName]
      ,[EMailAddress]
FROM [Contacts]

WHERE EMailAddress IN ('%@GMAIL%', '%@HOTMAIL%', '%@YAHOO%')

ORDER BY SUBSTRING(EMailAddress,(CHARINDEX('@',EMailAddress)+1),1)

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю записи ZERO, потому что у меня нет записей с адресом электронной почты%@GMAIL или%@HOTMAIL или%@YAHOO.

Мой код работал бы, если бы я изменил его на:

WHERE EMailAddress LIKE '%@GMAIL%'

Тогда я получу все записи с адресами Gmail. Но я хочу записи со всеми вышеуказанными адресами электронной почты.

Я также попробовал:

WHERE CONTAINS (EMailAddress, '"*GMAIL*" OR "*HOTMAIL*" OR "*YAHOO*"')

1 ответ

Решение

Вы не можете использовать подстановочные знаки в предложении IN, как это, вы должны использовать:

WHERE EmailAddress LIKE '%GMAIL%'
OR EmailAddress LIKE '%HOTMAIL%'
OR EmailAddress LIKE '%YAHOO%'
Другие вопросы по тегам