Isoler une valeur dans une colonne XML d’une table Microsoft SQL peut être très utile.
Dans cet article, nous vous donnons un exemple de récupération d’une valeur dans une structure XML.

Ci-dessous la structure XML stockée dans une table d’une base de données Microsoft SQL :

<?xml version="1.0"?>
<root>
<element attribute="Nom">Nom de mon Fichier</element>
</root>

Le but étant de récupérer la valeur « Nom de mon Ficher », la requête doit être capable d’isoler le niveau de structure XML en identifiant l’élément et l’attribut.

 

Requête Microsoft SQL (mono valeur)

Ci-dessous le format de la requête Microsoft SQL nécessaire :

with resultat as
(
SELECT
a.b.value('.','varchar(max)') AS Nom

FROM MaTableSQL
--/root/element représente la structure XML à parcourir
-- @attribute="Nom" représente le nom de l'attribut à rechercher
CROSS APPLY Data.nodes('/root/element[@attribute="Nom"]')a(b)
)
SELECT * from resultat
Résultat
Nom                |
-------------------|
Nom de mon Fichier |

 

Vous pouvez adapter cette requête pour isoler autant de valeur que vous souhaitez.
Un exemple ci-dessous avec des valeurs multiples à récupérer à partir d’une structure XML :

<?xml version="1.0"?>
 <root>
 <element attribute="Nom">Nom de mon Fichier</element>
 <element attribute="Extension">JPG</element>
 </root>

 

Requête Microsoft SQL (multi-valeurs)

Ci-dessous le format de la requête Microsoft SQL nécessaire :

with resultat as
 (
SELECT
a.b.value('.','varchar(max)') AS Noms,
c.d.value('.','varchar(max)') AS Extensions

FROM MaTableSQL
CROSS APPLY Data.nodes('/root/element[@attribute="Nom"]')a(b)
CROSS APPLY Data.nodes('/root/element[@attribute="Extension"]')c(d)
)
SELECT * from resultat
Résultat
Noms               | Extensions  |
-------------------|-------------|
Nom de mon Fichier |JPG          |

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoire sont indiqués par *

Les informations recueillies sur ce formulaire sont enregistrées dans un fichier informatisé et géré par Yattamedias pour la gestion de nos prospects et de notre clientèle. Elles sont conservées pendant 3 ans et sont destinées au service marketing.
Conformément à la loi « informatique et libertés », vous pouvez exercer votre droit d’accès aux données vous concernant et les faire rectifier en nous contactant : Yattamedias – Olivier Lasserre à l’adresse électronique : contact@yattamedias.com