1

我在数据库中有一个包含电子邮件地址的记录列表。

我想提取只有@gmail、@Hotmail 和@Yahoo 电子邮件地址的记录。我还想要按域名排序的记录。

我的代码:

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

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

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

我遇到的问题是我得到零记录,因为我没有电子邮件地址为 %@GMAIL 或 %@HOTMAIL 或 %@YAHOO 的记录。

如果我将代码更改为:

WHERE EMailAddress LIKE '%@GMAIL%'

然后我会得到所有带有 Gmail 地址的记录。但我想要所有上述电子邮件地址的记录。

我也试过:

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

1 回答 1

3

你不能在这样的 IN 子句中使用通配符,你必须使用:

WHERE EmailAddress LIKE '%GMAIL%'
OR EmailAddress LIKE '%HOTMAIL%'
OR EmailAddress LIKE '%YAHOO%'
于 2018-02-27T22:33:58.363 回答