Deklarovali jste to jako nvarchar (max), který umožňuje 2 GB dat, takže uloží 2 GB.
Co se děje:
- Datový typ ještě není nvarchar(max) až do přiřazení na @sql1
- Předtím je to sbírka řetězců, z nichž každý má méně než 4000 (konstanty)
- Zřetězujete krátké konstanty s krátkými proměnnými (short =<4000)
- Takže máte 4000 znaků vložených do @sql1
Takže se musíte ujistit, že máte nvarchar(max) na pravé straně.
Jeden nápad. 2. řádek zřetězí nvarchar(max) s konstantou =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Neliší se to od celočíselného dělení, které se děje v každém jazyce.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Priorita operátora (odvozuje prioritu datového typu) je vždy "přiřazení" poslední... proč by měly být řetězce unicode na SQL Serveru jiné?