Du har deklarerat detta som nvarchar(max) vilket tillåter 2 GB data så att det kommer att lagra 2 GB.
Vad händer:
- Datatypen är ännu inte nvarchar(max) förrän tilldelning till @sql1
- Dessförinnan är det en samling strängar, var och en mindre än 4000 (konstanter)
- Du sammanfogar korta konstanter med korta variabler (kort =<4000)
- Du har alltså 4000 tecken inlagda i @sql1
Så du måste se till att du har nvarchar(max) på höger sida.
En idé. Den andra raden sammanfogar nvarchar(max) med en konstant =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Det är inte annorlunda än heltalsdivisionen som sker på alla språk.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Operatörsprioritet (härleder datatypprioritet) är alltid "tilldelning" sist... varför skulle unicode-strängar i SQL Server vara annorlunda?