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.
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