Je veux lire les valeurs des nœuds de xml en sql, mon xml ressemble à ceci
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)
);
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