Sie haben dies als nvarchar (max) deklariert, was 2 GB Daten zulässt, sodass 2 GB gespeichert werden.
Was passiert:
- Der Datentyp ist bis zur Zuweisung noch nicht nvarchar(max). zu @sql1
- Davor ist es eine Sammlung von Strings, jeder weniger als 4000 (Konstanten)
- Sie verketten kurze Konstanten mit kurzen Variablen (short =<4000)
- Sie haben also 4000 Zeichen in @sql1 abgelegt
Stellen Sie also sicher, dass auf der rechten Seite nvarchar(max) steht.
Eine Idee. Die 2. Zeile verkettet nvarchar(max) mit einer Konstante =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Es unterscheidet sich nicht von der ganzzahligen Division, die in jeder Sprache vorkommt.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Die Operatorpriorität (leitet die Datentyppriorität ab) ist immer die letzte "Zuweisung" ... warum sollte es bei Unicode-Strings in SQL Server anders sein?