【发布时间】:2011-12-06 10:48:29
【问题描述】:
我有一个表格,其中包含用分号分隔的电子邮件域。
Domain
------
gmail.com;googlemail.com
hotmail.com;hotmail.co.uk;live.co.uk
我目前正在运行以下 SQL:
SELECT [Id]
FROM [DomainGroup]
WHERE [Domain] LIKE '%' + (SELECT RIGHT('anemail@gmail.com', CHARINDEX('@', REVERSE('anemail@gmail.com')) - 1)) + '%'
虽然这行得通,但我认为从性能和可读性两方面来看,使用 PATINDEX 可能会更好。电子邮件地址实际上是一个变量,但我将其放入以显示我想要实现的目标。
【问题讨论】:
-
为什么不把列规范化成一个单独的表呢?您当前的类似方法会说接受
hotmail.comforneil@hotmail.co,这对您的实施可能没什么大不了,但值得指出。
标签: performance sql-server-2008