Zadeklarowałeś to jako nvarchar(max), co pozwala na 2 GB danych, więc będzie przechowywać 2 GB.
Co się dzieje:
- Typ danych nie jest jeszcze nvarchar(max) do przypisania do @sql1
- Wcześniej jest to zbiór ciągów, każdy mniejszy niż 4000 (stałe)
- Łączysz krótkie stałe z krótkimi zmiennymi (krótkie =<4000)
- Więc masz 4000 znaków umieszczonych w @sql1
Więc upewnij się, że masz nvarchar(max) po prawej stronie.
Jeden pomysł. Druga linia łączy nvarchar(max) ze stałą =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Nie różni się to od dzielenia liczb całkowitych, które ma miejsce w każdym języku.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Pierwszeństwo operatorów (wnioskuje pierwszeństwo typu danych) jest zawsze „przypisaniem” jako ostatnie... dlaczego ciągi Unicode w SQL Server miałyby być inne?