2011-10-26 103 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

感谢您的快速回复它的工作。 –