切り捨てられた Nvarchar(Max) 値の取得
SQL Server 2005 では、Nvarchar(Max) 値のみが返されるという問題が発生する可能性があります。予期された 8000 文字ではなく 4000 文字です。この切り捨ては、
宣言について
変数 @SQL1 は NVARCHAR(Max) として宣言されており、最大 2GB のデータを格納できます。ただし、このデータ型は、最初の代入操作が行われるまで割り当てられません。
連結プロセス
提供されたコードでは、一連の定数と文字列を連結することによって文字列が構築されます。すべて 4000 文字未満の変数。 @SQL1 に割り当てられる前でも、連結された文字列は小さな文字列のコレクションとみなされます。
データ型の優先順位
@SQL1 への割り当てが発生すると、データは定数の型 (Nvarchar(Max)) は、連結された文字列のデータ型 (実質的には Nvarchar(4000)) をオーバーライドします。この結果、最終文字列は 4000 文字に切り詰められます。
解決策
この問題を解決するには、@SQL1 に連結される定数のデータ型もNvarchar(最大)。これは、次のコードを使用して実現できます。
SET @SQL1 = '' SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue... ....
最初に @SQL1 を空の文字列に設定すると、連結操作の結果は常に Nvarchar(Max) 値になり、切り捨ての問題が回避されます。
以上がSQL Server 2005 で NVARCHAR(MAX) 値が 4000 文字に切り捨てられるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。