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:
Alpha Beta Gamma
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.
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