Convertir une variable XML en texte avec SQL Server

Comment convertir une variable XML en chaîne de caractères et éviter les erreurs de conversion? Par exemple, la conversion implicite du type de données XML en NVARCHAR n’est pas autorisée. Avec SQL Server il est parfois intéressant de mixer des colonnes numériques avec des colonnes en XML pour une utilisation spéciale.

En effet, pour faire une requête plus facilement il est pratique de convertir la colonne de type XML en NVARCHAR pour pouvoir la filtrer avec les fonctions classiques.

 

Comment convertir une variable XML en chaîne de caractères avec un script T-SQL ?

Cette requête fonctionne aussi avec des colonnes XML.

Exemple sans conversion implicite du XML en NVARCHAR

Par exemple avec un fichier XML d’exemple comme celui-ci :

DECLARE @mon_xml XML;
DECLARE @ma_chaine NVARCHAR(500);

SET @mon_xml =
'<entreprise>
<employes>Dupont</employes>
<employes>Durant</employes>
</entreprise>';
SET @ma_chaine  = @mon_xml ;
SELECT @ma_chaine;
 
Un erreur est retournée par SQL Server : 
La conversion implicite du type de données XML en NVARCHAR n’est pas autorisée. Utilisez la fonction CONVERT pour exécuter cette requête.

La même erreur en Anglais :  

Implicit conversion from data type XML to NVARCHAR is not allowed. Use the CONVERT function to run this query.

Noter que ce message est générique et qu’il concerne toutes les conversions entre types de données non compatibles. 

Convertir une colonne ou une variable de type XML vers le type NVARCHAR avec la fonction SQL Server CONVERT().

La solution est d’utiliser la fonction SQL Server CONVERT du type XML vers le type NVARCHAR(). Avec cette solution simple on peut effectuer une requête sur des données de type XML et même faire une recherche avec les fonctions de filtre comme LIKE par exemple.

DECLARE @mon_xml XML;
DECLARE @ma_chaine VARCHAR(500);

SET @mon_xml =
'<entreprise>
<employes>Dupont</employes>
<employes>Durant</employes>
</entreprise>';

SET @ma_chaine = CONVERT(VARCHAR(500), @mon_xml);

SELECT @ma_chaine as RESULTAT;

Enfin, cet article explique comment transformer facilement une colonne ou une variable stockée au format xml vers une variable en NVARCHAR. Le XML est utilisé en T-SQL pour séparer des parties de texte avec séparateurs.

Par exemple, cet exemple de script Transact-SQL permet de découper une chaîne de caractère avec des séparateurs en plusieurs lignes distinctes. En utilisant une fonction XML disponible avec SQL Server.

Soyez le premier à commenter

Laisser un commentaire