In Ihrer SQL-Abfrage haben Sie die Variable @SQL1 als deklariert NVARCHAR(Max) haben aber ein Problem, bei dem nur 4000 Zeichen gespeichert werden. Dies geschieht aufgrund eines subtilen Verhaltens in TSQL bezüglich der automatischen Konvertierung von Datentypen während der Verkettung.
Das Problem verstehen:
Lösung:
Um sicherzustellen, dass @SQL1 zu NVARCHAR(Max) wird, Sie müssen sicherstellen, dass die Daten, die Sie auf der rechten Seite verketten, ebenfalls NVARCHAR(Max) sind. Eine Möglichkeit, dies zu tun, besteht darin, alle Konstanten oder Variablen vor der Verkettung explizit in NVARCHAR(Max) umzuwandeln.
Zum Beispiel führt der folgende Code korrekt dazu, dass @SQL1 NVARCHAR(Max) ist:
SET @SQL1 = N''; SET @SQL1 = @SQL1 + CAST('SELECT DISTINCT Venue...,' AS NVARCHAR(MAX));
Dadurch wird sichergestellt, dass die SELECT-Anweisung mit einer Zeichenfolge verkettet wird, die den Datentyp NVARCHAR(Max) hat, wodurch das Ergebnis ebenfalls erzwungen wird NVARCHAR(Max).
Das obige ist der detaillierte Inhalt vonWarum fasst meine NVARCHAR(MAX)-Variable in T-SQL nur 4000 Zeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!