SQL クエリで、変数 @SQL1 を次のように宣言しました。 NVARCHAR(Max) ですが、4000 文字しか保存できないという問題に直面しています。これは、連結時のデータ型の自動変換に関する TSQL の微妙な動作が原因で発生します。
問題の理解:
解決策:
@SQL1 が NVARCHAR(Max) になるようにするには、連結しているデータが右側にあることを確認する必要があります。 -hand 側も NVARCHAR(Max) です。これを行う 1 つの方法は、連結前に定数または変数を NVARCHAR(Max) に明示的にキャストすることです。
たとえば、次のコードは @SQL1 が正しく NVARCHAR(Max) になります:
SET @SQL1 = N''; SET @SQL1 = @SQL1 + CAST('SELECT DISTINCT Venue...,' AS NVARCHAR(MAX));
これにより、SELECT ステートメントが NVARCHAR(Max) データ型を持つ文字列と確実に連結され、結果も強制的に次のようになります。 NVARCHAR(Max) にしてください。
以上がT-SQL の NVARCHAR(MAX) 変数が 4000 文字しか保持できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。