2011-10-26 45 views
0

嗨,我需要控制我的值是否存在於逗號分隔列表中。TSQL PATINDEX在逗號分隔列表中搜索精確值

例如

DECLARE @list NVARCHAR = '6,3,67,34'; 

SELECT Column1, Column2 FROM Table1 
WHERE PATINDEX ('%' + CONVERT(NVARCHAR, Table1.ID) + '%', @list) 

它應該返回行哪個ID字段是6,3,67或34

如何我可以做有或沒有PATINDEX?

回答

3

添加領先,並在搜索尾隨逗號都@listTable1.ID

SELECT Column1, Column2 
    FROM Table1 
    WHERE CHARINDEX(',' + CONVERT(NVARCHAR, Table1.ID) + ',', ',' + @list + ',') <> 0; 
+0

是否有任何理由使用'NVARCHAR',而不是'VARCHAR'? – Gabe

+0

@加貝:不,我剛剛從原來的問題中複製出來。 –

+0

感謝您的快速回復它的工作。 –