web-dev-qa-db-fra.com

Lire la valeur du nœud interne de Xml à l'aide de Sql Server

Je veux lire les valeurs des nœuds de xml en sql, mon xml ressemble à ceci

enter image description here

Je veux juste lire la valeur du nœud de commande qui est 'Order 1' et mon code est

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT * FROM OPENXML (@idoc, '/ROOT/Customer/Order',0)
WITH (
    [Order]  varchar(100)
    );
2
Abhay
CREATE TABLE test(data xml);
insert into test values
('
<ROOT>
  <Customer>
    <Order>Order 1</Order>
  </Customer>
  <Customer>
    <Order>Order 2</Order>
  </Customer>
</ROOT>');
GO
 1 lignes affectées 

Si vous avez d'abord besoin de <Order> élément de vos données XML, vous pouvez utiliser la phrase suivante.

SELECT data.value('(ROOT/Customer/Order)[1]', 'varchar(100)')
FROM   test;
GO
 | (Pas de nom de colonne) | 
 | : ------------ | Ordre 1 | 

Si vous devez sélectionner tous les <Order> éléments, vous pouvez utiliser une solution CROSS APPLY avec .nodes ()

SELECT T2.lin.value('(Order)[1]', 'varchar(100)')
FROM   test
CROSS APPLY data.nodes('/ROOT/Customer') as T2(lin)
GO
 | (Pas de nom de colonne) | 
 | : --------------- | 
 | Ordre 1 | 
 | Ordre 2 | 

dbfiddle --- (ici

6
McNets