Anda telah menyatakan ini sebagai nvarchar(max) yang memungkinkan 2GB data sehingga akan menyimpan 2GB.
Apa yang terjadi:
- Tipe data belum nvarchar(maks) sampai tugas ke @sql1
- Sebelumnya, ini adalah kumpulan string, masing-masing kurang dari 4000 (konstanta)
- Anda menggabungkan konstanta pendek dengan variabel pendek (short =<4000)
- Jadi Anda memiliki 4000 karakter yang dimasukkan ke dalam @sql1
Jadi, pastikan Anda memiliki nvarchar(max) di sisi kanan.
Satu ide. Baris ke-2 menggabungkan nvarchar(max) dengan konstanta =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Tidak ada bedanya dengan pembagian bilangan bulat yang terjadi di setiap bahasa.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
Prioritas operator (menunjukkan prioritas tipe data) selalu "tugas" terakhir... mengapa string unicode di SQL Server harus berbeda?