Maison > base de données > tutoriel mysql > Pourquoi mes valeurs NVARCHAR(MAX) sont-elles tronquées à 4 000 caractères dans SQL Server 2005 ?

Pourquoi mes valeurs NVARCHAR(MAX) sont-elles tronquées à 4 000 caractères dans SQL Server 2005 ?

DDD
Libérer: 2025-01-01 06:56:10
original
289 Les gens l'ont consulté

Why are my NVARCHAR(MAX) values truncated to 4000 characters in SQL Server 2005?

Obtention de valeurs Nvarchar(Max) tronquées

Dans SQL Server 2005, vous pouvez rencontrer un problème où les valeurs Nvarchar(Max) ne renvoient que 4000 caractères au lieu des 8000 attendus. Cette troncature se produit en raison d'un scénario spécifique dans le code.

Comprendre la déclaration

La variable @SQL1 est déclarée comme NVARCHAR(Max), ce qui lui permet de stocker jusqu'à 2 Go de données. Cependant, ce type de données n'est attribué qu'à la première opération d'affectation.

Le processus de concaténation

Dans le code fourni, la chaîne est construite en concaténant une série de constantes et variables qui font toutes moins de 4000 caractères. Avant d'être affectée à @SQL1, la chaîne concaténée est toujours considérée comme un ensemble de chaînes plus petites.

Précédence du type de données

Lors de l'affectation à @SQL1, les données Le type de la constante (Nvarchar(Max)) remplace le type de données de la chaîne concaténée (qui est effectivement Nvarchar(4000)). Cela entraîne la troncature de la chaîne finale à 4 000 caractères.

Solution

Pour résoudre ce problème, assurez-vous que le type de données de la constante concaténée à @SQL1 est également Nvarchar(Max). Ceci peut être réalisé en utilisant le code suivant :

SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
  ....
Copier après la connexion

En définissant d'abord @SQL1 sur une chaîne vide, l'opération de concaténation entraînera toujours une valeur Nvarchar(Max), évitant ainsi le problème de troncature.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal