Troncation dans Nvarchar (Max) à 4000 caractères dans TSQL
Ce problème survient lors de la tentative de stockage de gros morceaux de texte dans une variable déclarée comme Nvarchar(Max) dans TSQL. Étonnamment, la variable n'accepte que 4 000 caractères au lieu des 8 000 attendus.
L'explication réside dans la nature de l'attribution des types de données dans TSQL. Déclarer une variable comme Nvarchar(Max) ne confère pas automatiquement l'attribut Max. Au lieu de cela, la variable se comporte initialement comme une collection de constantes de chaîne plus petites (moins de 4 000 caractères). Lorsque ces constantes sont concaténées ensemble, la variable @SQL1 résultante a toujours une limite de caractères de 4 000.
Pour résoudre ce problème, assurez-vous que le côté droit de l'instruction d'affectation pour @SQL1 est déjà un Nvarchar( Max) variable. Cela garantira que la valeur résultante est stockée avec la limite maximale de caractères autorisée.
Par exemple, le code suivant attribuera correctement le type de données Nvarchar(Max) à @SQL1 depuis le début :
SET @SQL1 = NVARCHAR(Max) SET @SQL1 = @SQL1 + 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName...
Cette approche empêche le comportement de division entière, où les types de données sont déduits en fonction de la priorité des opérateurs. Dans ce cas, la priorité de l'affectation est toujours la dernière, comme dans les autres langages de programmation. Par conséquent, l'affectation ci-dessus traite la chaîne entière comme Nvarchar(Max) dès le départ.
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!