Unerwartete Kürzung in Nvarchar(Max)-Daten
Trotz der Deklaration der @SQL1-Variablen als nvarchar(max), die bis zu 2 GB speichern kann Bei einer Datenmenge wird das Ergebnis auf 4000 Zeichen gekürzt. Dies mag rätselhaft erscheinen, insbesondere angesichts der enormen Datenkapazität von nvarchar(max).
Das Problem liegt in der Verkettung von Zeichenfolgen innerhalb der @SQL1-Variablen. Bevor die Daten @SQL1 zugewiesen werden, werden sie als Sammlung von Zeichenfolgen mit einer Länge von weniger als 4000 Zeichen gespeichert. Wenn diese Zeichenfolgen verkettet werden, behalten sie ihre maximale Länge. Infolgedessen erstellt die Zuweisung zu @SQL1 eine Zeichenfolge mit einer Länge von 4000 Zeichen, obwohl der deklarierte Datentyp viel mehr zulässt.
Um diese Kürzung zu vermeiden, stellen Sie sicher, dass alle verketteten Zeichenfolgen vom Typ nvarchar sind (max) Datentyp, bevor Sie die Zuweisung durchführen. Dies kann erreicht werden, indem kürzere Zeichenfolgen explizit in nvarchar(max) umgewandelt werden. Zum Beispiel:
SET @SQL1 = N'' SET @SQL1 = @SQL1 + N'SELECT DISTINCT Venue...'
Durch die Umwandlung der Konstantenzeichenfolge in nvarchar(max) wird die gesamte Zeichenfolge zu nvarchar(max) und das Kürzungsproblem wird behoben.
Das obige ist der detaillierte Inhalt vonWarum wird meine Nvarchar(Max)-Variable bei 4000 Zeichen abgeschnitten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!