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