Comment puis-je convertir un champ XML avec plus de 8000 caractères dans une chaîne de caractères?
J'ai un Serveur SQL de la colonne de type XML
contenant quelques records avec plus de 8000 caractères.
Je voudrais le convertir cette colonne dans un varchar
.
Je ne suis pas préoccupé par la troncature (les 8000 premiers personnages est très bien).
Cependant, chaque fois que j'essaie CONVERT(varchar(8000), Content)
j'obtiens une erreur:
Chaîne de caractères de taille est trop petite pour représenter l'instance XML
Quand j'essaie CONVERT(varchar(MAX), Content)
j'obtiens une erreur:
Chaîne ou des données binaires seront tronquées
Quand j'essaie CONVERT(varchar(20000), Content)
j'obtiens une erreur:
La taille (20000) compte tenu du type "varchar" dépasse le maximum autorisé pour n'importe quel type de données (8000)
Quand j'essaie CONVERT(text, Content)
j'obtiens une erreur:
Conversion explicite de type de données xml de texte n'est pas autorisée
Est-il une solution?
- Casting pour
varchar(max)
devrait fonctionner parfaitement. Comme ce n'.. - C'est peut-être de configuration puis.. j'ai certainement une erreur.
- Post que comme une réponse et je vais l'accepter. J'ai fait un muet (le contexte particulier j'ai été en utilisant les convertir dans causé un problème qui bouillonnait).
- Fait, et j'ai essayé de deviner votre "fait problème" aussi bien :).
Vous devez vous connecter pour publier un commentaire.
Fonte à
varchar(max)
devrait fonctionner parfaitement. Vous avez probablement un problème ailleurs. Vous obtenez cette erreur si vous essayez d'insérer/mettre à jour une colonne avec le type de donnéesvarchar(8000)
.hashbytes
fonction qui a une limite de 8000 max 🙂Le problème que vous rencontrez a à voir avec la tentative de transformer le xml en varchar. J'ai couru dans un problème similaire avant lorsque vous tentez de convertir une chaîne de caractères XML qui est beaucoup plus petite que la vôtre dans NVARCHAR. Le passage d'un CONVERTIR à un CASTING qui devrait résoudre votre problème. Autant que la taille vous êtes mieux de simplement le paramètre MAX.
Je n'ai jamais eu ce besoin particulier, mais d'une autre manière, je voudrais essayer serait
Target string size is too small to represent the XML instance