1
DECLARE @x varchar(250), @xx xml
的月列表。如果我在我的SP部门ID的传入的名单看起来是这样的:存储过程接收逗号月表ID要检索逗号解码值
set @x = '3, 9, 10, 12, 14'
我可以很容易地将其转换成XML和查询它是这样的:
set @xx = '<xml><e>' + REPLACE(@x,', ','</e><e>') + '</e></xml>'
select @xx
返回:
<xml><e>3</e><e>9</e><e>10</e><e>12</e><e>14</e></xml>
而且
select @xx.query('for $d in /xml/e return data($d)')
返回:
3 9 10 12 14
使用XML路径我可以手动获得逗号分隔的部门名称的列表,当我知道前手的DeptIDs
select SUBSTRING((SELECT (', '+DeptName) from vDepartments where DeptID in (3, 9, 10, 12, 14) for xml path('')), 3, 1000)
但是,我认为我应该能够从上面的XML做到这一点:
select SUBSTRING((SELECT (', '+DeptName) from vDepartments where DeptID in @xx.query('for $d in /xml/e return string($d)') for xml path('')), 3, 1000)
什么是错误?你已经传达了你想要做的事情......但是当你尝试时不会发生什么。 – RThomas 2011-06-16 04:15:51