我在 sql server 的 xml 列中有以下 xml,它与 id 列一起在一个表中 -
<ArrayOfExtVar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExtVar>
<Name xsi:type="xsd:string">Rate Code</Name>
<Value xsi:type="xsd:string">E46</Value>
</ExtVar>
<ExtVar>
<Name xsi:type="xsd:string">Middle Name</Name>
<Value xsi:type="xsd:string">Henry</Value>
</ExtVar>
</ArrayOfExtVar>
我有以下 XPath -
SELECT CustID,
ExtVars.value('(/ArrayOfExtVar/ExtVar/Value)[1]', 'Nvarchar(max)') AS RateCode,
ExtVars.value('(/ArrayOfExtVar/ExtVar/Value)[2]', ''Nvarchar(max)') AS MiddleInitial
FROM dbo.Customer
这很好,但我真正想做的是通过“名称”而不是索引([1])查询 xml,因为这些可能不时以不同的顺序存储。
基本上我需要知道的是如何通过“名称”的值进行查询,例如 -
'(/ArrayOfExtVar/ExtVar/Value)[Rate Code]'
我可以向 ExtVars 节点添加一个属性并对其进行查询吗?