Maison >base de données >tutoriel mysql >Comment interroger des valeurs spécifiques dans une colonne XML dans SQL Server ?

Comment interroger des valeurs spécifiques dans une colonne XML dans SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-13 12:35:13638parcourir

How to Query for Specific Values within an XML Column in SQL Server?

Extraction de données des colonnes XML de SQL Server

Récupérer efficacement des valeurs spécifiques à partir de données XML dans SQL Server est crucial pour l'analyse des données. Ce guide montre comment interroger des valeurs particulières résidant dans une colonne XML.

Considérez une colonne XML nommée « Rôles », stockant du XML représentant les rôles des utilisateurs. Un exemple de fragment XML pourrait ressembler à ceci :

<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>

Pour rechercher toutes les lignes contenant un rôle spécifique (par exemple, "Gamma"), utilisez cette requête T-SQL :

<code class="language-sql">SELECT
  Roles.value('(/root/role)[1]', 'varchar(max)')
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'Gamma';</code>

Cette requête utilise la fonction value() pour extraire le premier nom de rôle et utilise LIKE pour les correspondances partielles. N'oubliez pas que cela suppose que « Roles » est de type de données XML. Les autres types de données nécessiteront d'abord une conversion au format XML.

Accès aux attributs XML

Si vous devez interroger un attribut spécifique à partir d'un élément XML, la fonction value() reste votre outil, mais l'expression XPath change. Par exemple, considérons ce XML avec les attributs :

<code class="language-xml"><utilities.codesystems.codesystemcodes code="0001F" codesystem="2" ... /></code>

Pour récupérer la valeur de l'attribut "codesystem" ("2"), utilisez :

<code class="language-sql">SELECT
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)')
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)') = '2';</code>

Requêtes XML avancées

Pour des scénarios plus complexes, tels que la gestion de structures XML imbriquées ou l'itération sur plusieurs éléments de rôle, explorez des techniques telles que l'aplatissement XML et CROSS APPLY. Reportez-vous à la documentation XML avancée de SQL Server pour obtenir des conseils détaillés sur ces méthodes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn