Декларирахте това като nvarchar(max), което позволява 2GB данни, така че ще съхранява 2GB.
Какво се случва:
- Типът данни все още не е nvarchar(max) до присвояване до @sql1
- Преди това това е колекция от низове, всеки по-малко от 4000 (константи)
- Конкатенирате къси константи с кратки променливи (short =<4000)
- Значи имате 4000 знака, поставени в @sql1
Така че трябва да се уверите, че имате nvarchar(max) от дясната страна.
Една идея. Вторият ред обединява nvarchar(max) с константа =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Не се различава от целочисленото деление, което се случва на всеки език.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Приоритетът на оператора (извежда приоритета на типа данни) винаги е "присвояване" последно... защо низовете на Unicode в SQL Server трябва да бъдат различни?