TSQL での Nvarchar(Max) の 4000 文字への切り捨て
この問題は、宣言された変数に大きなテキストの塊を格納しようとすると発生します。 TSQL の Nvarchar(Max) として。驚くべきことに、変数は予想される 8000 文字ではなく 4000 文字しか収容できません。
その説明は、TSQL でのデータ型割り当ての性質にあります。変数を Nvarchar(Max) として宣言しても、Max 属性は自動的に付与されません。代わりに、変数は最初は小さい (4000 文字未満) 文字列定数のコレクションとして動作します。これらの定数を連結しても、結果の @SQL1 変数の文字数制限は 4000 文字になります。
この問題を解決するには、@SQL1 の代入ステートメントの右側がすでに Nvarchar(最大) 変数。これにより、結果の値が最大許容文字数制限で保存されることが保証されます。
たとえば、次のコードは Nvarchar(Max) データ型を最初から @SQL1 に正しく割り当てます。
SET @SQL1 = NVARCHAR(Max) SET @SQL1 = @SQL1 + 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName...
このアプローチにより、演算子の優先順位に基づいてデータ型が推測される整数の除算動作が防止されます。この場合、他のプログラミング言語と同様に、代入の優先順位は常に最後になります。したがって、上記の代入では、文字列全体が最初から Nvarchar(Max) として扱われます。
以上がT-SQL の Nvarchar(Max) が 4000 文字に切り詰められるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。