ホームページ >データベース >mysql チュートリアル >Nvarchar(Max) 変数が 4000 文字で切り捨てられるのはなぜですか?
Nvarchar(Max) データの予期しない切り捨て
@SQL1 変数を nvarchar(max) として宣言しているにもかかわらず、最大 2GB まで保存できますデータが大きい場合、結果は 4000 文字で切り捨てられます。これは、特に nvarchar(max) の膨大なデータ容量を考慮すると不可解に思えるかもしれません。
問題は、@SQL1 変数内の文字列の連結にあります。 @SQL1 に割り当てられる前に、データは 4000 文字未満の長さの文字列のコレクションとして保存されます。これらの文字列を連結すると、最大長が維持されます。その結果、@SQL1 への代入により、宣言されたデータ型ではさらに多くの文字が許可されているにもかかわらず、長さ 4000 文字の文字列が作成されます。
この切り捨てを回避するには、連結されるすべての文字列が nvarchar であることを確認してください。 (max) 代入を実行する前のデータ型。これは、短い文字列を明示的に nvarchar(max) にキャストすることで実現できます。例:
SET @SQL1 = N'' SET @SQL1 = @SQL1 + N'SELECT DISTINCT Venue...'
定数文字列を nvarchar(max) としてキャストすると、文字列全体が nvarchar(max) になり、切り捨ての問題は解決されます。
以上がNvarchar(Max) 変数が 4000 文字で切り捨てられるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。