在存储过程内的列中分离值

时间:2014-01-04 05:28:26

标签: sql sql-server sql-server-2008 select sql-like

我正在使用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逗号分隔。

谢谢,

1 个答案:

答案 0 :(得分:1)

NORMALIZATION of TABLES是更好的方法。

替代解决方案:

SELECT a.NotificationMessage 
FROM twfNotification a
WHERE ',' + a.SubscribedUsers + ',' LIKE '%,' + CONVERT(VARCHAR(10), @iSubscribedID) + ',%'