ホームページ > データベース > mysql チュートリアル > T-SQL の NVARCHAR(MAX) 変数が 4000 文字しか保持できないのはなぜですか?

T-SQL の NVARCHAR(MAX) 変数が 4000 文字しか保持できないのはなぜですか?

Susan Sarandon
リリース: 2025-01-04 17:03:08
オリジナル
793 人が閲覧しました

Why is my NVARCHAR(MAX) variable in T-SQL only holding 4000 characters?

TSQL の Nvarchar(Max) で 8000 文字ではなく 4000 文字しか取得されないのはなぜですか?

SQL クエリで、変数 @SQL1 を次のように宣言しました。 NVARCHAR(Max) ですが、4000 文字しか保存できないという問題に直面しています。これは、連結時のデータ型の自動変換に関する TSQL の微妙な動作が原因で発生します。

問題の理解:

  • @SQL1 を次のように宣言した場合NVARCHAR(Max)、2 GB のデータを保持できる容量があります。ただし、値を割り当てるまで、そのデータ型は実際には NVARCHAR(Max) ではありません。
  • 割り当て前、@SQL1 は基本的に、それぞれ 4000 文字未満の文字列のコレクションです (今回の場合、
  • これらの短い文字列を短い変数と連結すると、結果のデータ型は NVARCHAR(4000) のままになります。操作には長さ 4000 文字未満の文字列が含まれます。
  • そのため、最終的に結果を @SQL1 に代入すると、データ型は NVARCHAR(4000) のままとなり、最終的には 4000 文字のみになります。

解決策:

@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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート