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]
我正在尝试在 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]