"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 > Pourquoi mes valeurs Nvarchar (Max) sont-elles tronquées à 4000 caractères dans SQL Server 2005?

Pourquoi mes valeurs Nvarchar (Max) sont-elles tronquées à 4000 caractères dans SQL Server 2005?

Publié le 2025-02-06
Parcourir:665

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

Obtenir des valeurs nvarchar (max) tronquées

Dans SQL Server 2005, vous pouvez rencontrer un problème lorsque les valeurs nvarchar (max) ne renvoient que 4000 caractères au lieu du 8000 attendu. Cette troncature se produit en raison d'un scénario spécifique dans le code fourni.

Comprendre la déclaration

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

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 sont toutes inférieures à 4000 caractères. Avant d'être affecté à @ sql1, la chaîne concaténée est toujours considérée comme une collection de chaînes plus petites.

Type de données Précédence

Lorsque l'affectation à @ sql1 se produit, les données se produisent, 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)). Il en résulte de tronquer la chaîne finale en 4000 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). Cela peut être réalisé en utilisant le code suivant:

SET @SQL1 = ''
SET @SQL1 = @SQL1   'SELECT DISTINCT Venue...
  ....

En définissant @ SQL1 à une chaîne vide d'abord, l'opération de concaténation entraînera toujours une valeur nvarchar (max), empêchant le problème de troncature.

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