"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment interroger la valeur d'une colonne XML dans SQL Server?

Comment interroger la valeur d'une colonne XML dans SQL Server?

Publié le 2025-04-19
Parcourir:936

How to Query Values within XML Columns in SQL Server?

Accédant aux données dans les colonnes XML de SQL Server

SQL Server permet de stocker des données XML dans des colonnes définies comme des types de données XML. La récupération de données spécifiques de ces colonnes nécessite des requêtes spécialisées.

Disons que vous avez une colonne XML nommée "Rôles" avec cette structure:

AlphaBetaGamma

Pour trouver des lignes contenant un rôle particulier, utilisez cette requête:

SELECT
  Roles
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'

Ceci utilise rôles.value pour extraire la valeur de l'élément premier , la convertissant en varchar (max) . Cela permet à la recherche de rôles spécifiques.

Si votre colonne n'est pas déjà un type de données XML, utilisez casser pour la convertir avant de remettre en question.

La requête peut également cibler les attributs XML. Par exemple, avec ce XML dans la colonne "Data":

pour obtenir des lignes où codesystem est "2":

SELECT
  [data]
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'

Pour une question XML plus avancée en T-SQL, voir:

Alternativement, Cross appliquez offre plus de flexibilité pour rechercher plusieurs éléments "rôle":

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%'

Cette approche permet une extraction plus efficace et ciblée des données des colonnes XML dans SQL Server.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3