Heim > Datenbank > MySQL-Tutorial > Warum fasst meine NVARCHAR(MAX)-Variable in T-SQL nur 4000 Zeichen?

Warum fasst meine NVARCHAR(MAX)-Variable in T-SQL nur 4000 Zeichen?

Susan Sarandon
Freigeben: 2025-01-04 17:03:08
Original
795 Leute haben es durchsucht

Why is my NVARCHAR(MAX) variable in T-SQL only holding 4000 characters?

Warum erhalte ich für Nvarchar(Max) in TSQL nur 4000 statt 8000 Zeichen?

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:

  • Wenn Sie @SQL1 als deklarieren NVARCHAR(Max), es hat die Kapazität, 2 GB Daten zu speichern. Allerdings ist sein Datentyp nicht wirklich NVARCHAR(Max), bis Sie ihm einen Wert zuweisen.
  • Vor der Zuweisung ist @SQL1 im Wesentlichen eine Sammlung von Zeichenfolgen, die jeweils kürzer als 4000 Zeichen sind (in Ihrem Fall die Konstanten in Ihre Abfrage).
  • Wenn Sie diese kurzen Zeichenfolgen mit kurzen Variablen verketten, bleibt der resultierende Datentyp NVARCHAR(4000), da jede Operation Zeichenfolgen umfasst, die sind weniger als 4000 Zeichen lang.
  • Wenn Sie das Ergebnis schließlich @SQL1 zuweisen, bleibt der Datentyp NVARCHAR(4000) und Sie haben am Ende nur 4000 Zeichen.

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));
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage