我正在使用SQL Server 2008。
我有一个表,它以这种方式存储有关发送通知的用户以及列存储的用户ID之一的信息,例如3,4,5。
我正在将userid
传递给我的存储过程,如果传递的用户ID包含在列数据中,我想返回结果集。
如果我传递4并且我的订阅者ID是3,4,5,因为4存在,我需要选择该行。
SELECT twfNotification.NotificationMessage ,
FROM twfNotification
WHERE @iSubscribedID in (twfNotification.SubscribedUsers)
'twfNotification.SubscribedUsers - > nvarchar的'
twfNotification.SubscribedUsers使用3,4,5这样的数据,我传递@iSubscribedID = 4这是在SP中。所以现在我必须找出传递给@iSubscribedID,即twfNotification.SubscribedUU列中是否存在4。
如果直接比我们可以做@iSubscribedID = twfNotification.SubscribedUsers,但twfNotification.SubscribedUsers列的存储值就像3,4,5逗号分隔。
谢谢,
答案 0 :(得分:1)
NORMALIZATION of TABLES
是更好的方法。
替代解决方案:
SELECT a.NotificationMessage
FROM twfNotification a
WHERE ',' + a.SubscribedUsers + ',' LIKE '%,' + CONVERT(VARCHAR(10), @iSubscribedID) + ',%'