【问题标题】:SQL: How do I select an XML element from within a larger variable of type XML?SQL:如何从 XML 类型的较大变量中选择 XML 元素?
【发布时间】:2009-09-21 22:31:30
【问题描述】:

我将多个不同的数据项发送到 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)

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

有人对此有解决方案吗?

【问题讨论】:

    标签: sql-server xml


    【解决方案1】:

    使用XQuery:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多