これをnvarchar(max)として宣言しました。これにより、2 GBのデータが許可されるため、2GBが格納されます。
何が起こっているのか:
- データ型は割り当てまでまだnvarchar(max)ではありません @sql1へ
- それ以前は、それぞれが4000(定数)未満の文字列のコレクションです
- 短い定数を短い変数(short =<4000)と連結しています
- つまり、4000文字を@sql1に入れます
したがって、右側にnvarchar(max)があることを確認してください。
1つのアイデア。 2行目は、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
演算子の優先順位(データ型の優先順位を下げる)は常に最後に「代入」されます... SQL ServerのUnicode文字列が異なる必要があるのはなぜですか?