我有像
这样的xml<list of roleids>
<roleid> 1 </roleid>
<roleid> 2 </roleid>
<roleid> 3 </roleid>
<roleid> 4 </roleid>
</list of Roleids>
我希望在具有列RoleID
的表中使用roleid值我尝试过以下查询,但我没有得到预期的输出
declare @ListOfRoleID XML
set @ListOfRoleID =
'<list>
<roleid>1</roleid>
<roleid>2</roleid>
</list>'
DECLARE @RoleIDList TABLE (RoleID int)
INSERT INTO @RoleIDList(RoleID)
SELECT X1.value('(roleid)[1]','INT') as roleid
from @ListOfRoleID.nodes('/list') as ListOfRoleID(x)
CROSS APPLY @RoleIDList.nodes('/list') AS ListOfRoleID1 (X1)
答案 0 :(得分:2)
您想要投射.nodes('/list/roleid')
,这将为每个roleid创建一行。然后提取值。无需交叉申请。见sqlfiddle:
declare @ListOfRoleID XML = '<list>
<roleid>1</roleid>
<roleid>2</roleid>
<roleid>3</roleid>
</list>';
SELECT x.value('.','INT') as roleid
from @ListOfRoleID.nodes('/list/roleid') as ListOfRoleID(x);