Du har erklæret dette som nvarchar(max), hvilket tillader 2 GB data, så det vil gemme 2 GB.
Hvad sker der:
- Datatypen er endnu ikke nvarchar(max) før tildeling til @sql1
- Før det er det en samling strenge, hver på mindre end 4000 (konstanter)
- Du sammenkæder korte konstanter med korte variabler (kort =<4000)
- Så du har 4000 tegn indsat i @sql1
Så du skal sørge for at have nvarchar(max) på højre side.
En idé. Den anden linje sammenkæder nvarchar(max) med en konstant =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Det er ikke anderledes end heltalsdelingen, der sker på alle sprog.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Operatørprioritet (udleder datatypeprioritet) er altid "tildeling" sidst... hvorfor skulle unicode-strenge i SQL Server være anderledes?