我有一个如下所述的xml,
Declare @Message as xml
set @Message='<message>
<body>
<ID>1</ID>
<setup_time>10</setup_time>
<prod_cycle_time>10</prod_cycle_time>
<unit>cas</unit>
<Flag>NULL</Flag>
<FillingPO>NULL</FillingPO>
<PackAtCAN1>NULL</PackAtCAN1>
</body>
</message>'
我正在尝试使用查询
下方插入INSERT into table(ID,Desc,Value)
SELECT p.value('ID[1]','INT'),
p.value('Desc[1]','NVARCHAR(50)'),
p.value('Value[1]','NVARCHAR(40)')
FROM @message.nodes('/message/Body/') x(p)
我想在格式
中插入上面的XML数据ID Desc Value
1 setup_time 10
1 prod_cycle_time 10
1 unit Case
1 Flag NULL
1 FillingPO NULL
1 PackAtCAN1 NULL
但我只能插入一条记录
答案 0 :(得分:1)
您需要进行一些更改,第一个是在节点函数中添加body/
之后的通配符,以确保返回所有节点。然后在选择value('.', ...)
以获取值,并local-name获取元素名称,以便您的查询最终结果如下:
SELECT p.value('../../ID[1]','INT'),
p.value('local-name(.)','NVARCHAR(50)'),
p.value('.','NVARCHAR(40)')
FROM @message.nodes('/message/body/*') x(p)