SQL:如何从XML类型的较大变量中选择XML元素?

时间:2009-09-21 22:31:31

标签: sql-server xml

我将多个不同的数据项发送到XML变量中的存储过程。函数的签名是这样的:

CREATE PROCEDURE MyProc
   @id INT,
   @xml xml
AS
BEGIN
....
END

,XML看起来有点像这样:

<Root>
   <SampleTime>2009-02-05 13:25:43</SampleTime>
   <Gizmo1>
     <Voltage>34.1</Voltage>
     <Temperature>78.3</Temperature>
   </Gizmo1>
   <Gizmo2>
      <Weight>235</Weight>
      <Exposure>North</Exposure>
   </Gizmo2>
</Root>

其中不同的GizmoX包含不相关的信息。 当我想从XML中提取单个字段时,我在SELECT FROM xml.Nodes()方面运气不错,如

SELECT T.item.value('Voltage[1]', 'float') as Voltage
FROM @xml.nodes('//Root/Gizmo1') T(item)

现在我遇到的问题是我想在另一个xml变量中提取整个Gizmo元素。 values()函数不接受数据类型'xml',我不知道该选择什么。

有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

使用XQuery

select @xml.query('//Root/Gizmo1')