Eu tenho uma coluna xml que se parece com isso:
<document>
<item>
<key>
<string>Michael Burry</string>
</key>
<value>
<string>CDO</string>
</value>
</item>
<item>
<key>
<string>Adam Smith</string>
</key>
<value>
<string>£20</string>
</value>
</item>
<item>
<key>
<string>World Cup 2018</string>
</key>
<value>
<string>football</string>
</value>
</item>......
Em vez de listar todo o conteúdo da coluna, quero listar apenas o valor de <string>football</string>
quando o primeiro valor for <string>World Cup 2018</string>
.
O uso value('(/document/item/key/string)[7]', 'nvarchar(max)')
não é adequado, pois "Copa do Mundo 2018" pode aparecer em qualquer lugar.
Se você quiser apenas um único valor, basta usar o
value
método do tipo de dados XML com um pouco de XPath que se traduz em:Algo assim:
Espero ter entendido seu pedido. A chave é
Aqui está o selecionado:
resultado:
dbfiddle
ou maneira antiga: