Extraction de valeur de colonne XML SQL Server
Le type de colonne XML de SQL Server permet un stockage et une récupération efficaces des données XML. Ce guide présente des méthodes efficaces pour interroger des valeurs spécifiques dans ces colonnes.
Le défi :
Imaginez une colonne XML nommée « Rôles » dans votre base de données SQL Server, contenant des données comme celle-ci :
<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>
Le but est de trouver toutes les lignes où un rôle particulier (spécifié en paramètre) existe dans la colonne "Rôles".
Solution :
Une approche simple utilise la fonction value()
:
<code class="language-sql">SELECT Roles FROM MyTable WHERE Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'</code>
Ici, Roles
est la colonne XML et StringToSearchFor
représente le rôle que vous recherchez. La fonction value()
extrait le nœud à l'aide de l'expression XPath.
Scénarios avancés :
Les requêtes plus complexes peuvent nécessiter ces techniques :
CAST()
pour la convertir avant d'interroger.value()
pour cibler l'attribut spécifique.Efficacité améliorée :
Pour les documents XML volumineux, l'opérateur CROSS APPLY
offre des améliorations de performances significatives :
<code class="language-sql">SELECT * FROM ( SELECT pref.value('(text())[1]', 'varchar(32)') AS RoleName FROM MyTable CROSS APPLY Roles.nodes('/root/role') AS Roles(pref) ) AS Result WHERE RoleName LIKE '%ga%'</code>
Roles.nodes()
extrait tous les nœuds correspondants en fonction de l'expression XPath. value()
récupère ensuite le contenu textuel de chaque nœud, permettant un traitement efficace de plusieurs rôles au sein d'un seul document XML.
Résumé :
La récupération des valeurs des colonnes XML de SQL Server nécessite des fonctions et des stratégies spécifiques. Les méthodes présentées ici fournissent des solutions polyvalentes pour extraire des données simples et complexes du XML stocké dans votre base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!