Kürzung in Nvarchar (Max) auf 4000 Zeichen in TSQL
Dieses Problem tritt auf, wenn versucht wird, große Textblöcke in einer deklarierten Variablen zu speichern als Nvarchar(Max) in TSQL. Überraschenderweise fasst die Variable nur 4000 Zeichen statt der erwarteten 8000.
Die Erklärung liegt in der Art der Datentypzuweisung in TSQL. Durch die Deklaration einer Variablen als Nvarchar(Max) wird nicht automatisch das Max-Attribut zugewiesen. Stattdessen verhält sich die Variable zunächst wie eine Sammlung kleinerer Zeichenfolgenkonstanten (weniger als 4000 Zeichen). Wenn diese Konstanten miteinander verkettet werden, hat die resultierende @SQL1-Variable immer noch eine Zeichenbeschränkung von 4000.
Um dieses Problem zu beheben, stellen Sie sicher, dass die rechte Seite der Zuweisungsanweisung für @SQL1 bereits ein Nvarchar( Max) variabel. Dadurch wird sichergestellt, dass der resultierende Wert mit der maximal zulässigen Zeichenbeschränkung gespeichert wird.
Zum Beispiel weist der folgende Code den Datentyp Nvarchar(Max) von Anfang an korrekt @SQL1 zu:
SET @SQL1 = NVARCHAR(Max) SET @SQL1 = @SQL1 + 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName...
Dieser Ansatz verhindert das Verhalten der Ganzzahldivision, bei der Datentypen basierend auf der Priorität der Operatoren abgeleitet werden. In diesem Fall steht die Zuweisung immer an letzter Stelle, ähnlich wie bei anderen Programmiersprachen. Daher behandelt die obige Zuweisung die gesamte Zeichenfolge von Anfang an als Nvarchar(Max).
Das obige ist der detaillierte Inhalt vonWarum wird Nvarchar(Max) in T-SQL auf 4000 Zeichen gekürzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!