SQL :: Split逗号分隔列值并应用IN运算符

时间:2015-01-06 11:44:10

标签: sql sql-server

问题陈述::

我有一个名为category的数据库表,其中包含列名为categoryIds,下面是示例数据到categoryIDs列

categoryIds = '17,34,400,12'

现在我已经编写了下面的SQL查询来查找类别

将@search声明为varchar

设置@ search ='40'

从类别中选择*,类别为'%'+ @search +'%'

上面的查询返回结果是错误的,因为categoryID不包含40个类别

1 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助:

DECLARE @categoryIds VARCHAR(100) = '17,34,400,12'

SELECT t1.nod.value('.', 'varchar(50)') tags
FROM   (SELECT Cast('<N>' + Replace(@categoryIds, ',', '</N><N>')
                    + '</N>' AS XML) AS format) t
       CROSS APPLY format.nodes('/N') AS t1(nod)
WHERE  t1.nod.value('.', 'varchar(50)') = '40'