U hebt dit gedeclareerd als nvarchar(max), wat 2 GB aan gegevens toestaat, zodat het 2 GB kan opslaan.
Wat gebeurt er:
- Het datatype is nog niet nvarchar(max) tot toewijzing naar @sql1
- Daarvoor is het een verzameling strings, elk minder dan 4000 (constanten)
- Je koppelt korte constanten aan korte variabelen (short =<4000)
- Dus je hebt 4000 tekens in @sql1
Zorg er dus voor dat u nvarchar(max) aan de rechterkant heeft.
Een idee. De 2e regel voegt nvarchar(max) samen met een constante =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Het is niet anders dan de gehele deling die in elke taal voorkomt.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
De prioriteit van de operator (leidt de prioriteit van het gegevenstype af) is altijd "toewijzing" als laatste... waarom zouden unicode-tekenreeksen in SQL Server anders zijn?