T-SQL 从 XML 获取值

T-SQL get value from XML

我正在尝试在 SQL 服务器中查询 XML (SSRS);在这种情况下,我想从 TO 获取值。

<ParameterValues>
    <ParameterValue>
        <Name>TO</Name>
        <Value>PacoAT@Stack.com</Value>
    </ParameterValue>
    <ParameterValue>
        <Name>RenderFormat</Name>
        <Value>EXCEL</Value>
    </ParameterValue>
</ParameterValues>

我尝试了一些查询,但似乎无法达到那个水平。

您可以使用 XQuery

SELECT
  [TO] = t.XmlColumn.value('(ParameterValues/ParameterValue[Name/text() = "TO"]/Value/text())[1]', 'varchar(100)')
FROM YourTable t

/是子节点导航。 [] 是对特定节点的谓词测试。所以这会寻找 ParameterValues/ParameterValue,它有一个 Name 子文本 TO 和 returns Value 子文本。

注意使用 text() 而不是依赖隐式 conversion/atomization。另外.value需要保证单个结果,所以需要[1]