nvarchar(MAX)が保持する最大文字数はいくつですか?


回答:


155

マックス。容量は2ギガバイトのスペースです。つまり、NVARCHAR(MAX)フィールドに収まる10億を超える2バイト文字を調べています。

他の回答のより詳細な数値を使用すると、保存できるはずです

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

あなたのNVARCHAR(MAX)コラム(残念ながら、その後半の文字は無駄になっています...)

更新: @MartinMulderが指摘したように:可変長文字列にも実際の長さを格納するために2バイトのオーバーヘッドがあります。そのため、2 ^ 31 - 1以前に規定した長さからさらに2バイトを減算する必要があり、1文字未満のUnicode文字を格納できます。私は以前に主張しました。


1
うわー...だから私は本当に最大サイズの検証ルールを設定することについて心配する必要はないと思います。nvarchar(MAX)を使用するときは注意が必要です。
quakkels

20
@quakkels:トルストイの戦争と平和(約310万文字)を約350倍超える予定がない限り-いいえ、容量について心配する必要はありません:-)そして、それはVARCHAR / NVARCHARタイプなので、常に必要なだけのスペースを使用します-無駄なスペースや不必要に予約されたスペースの心配もありません...
marc_s

2
本当に?カッコいい。ちょうど好奇心から、nvarchar(MAX)を使用したくない場合はどうしますか?
quakkels 2010年

5
@quakkels:VARCHAR(MAX)アジア、アラブ、またはキリル言語の2バイトサポートが必要ない場合は、を使用します。(N)VARCHAR(x)文字列がx文字を超えないことがわかっている場合に使用します(NVARCHAR(MAX)名に使用しないでください-使用するNVARCHAR(50)か、あなた
にとって

1
私は午前中に同じ質問をし始めたばかりで、あなたの両方の答えが私の顔に大きな笑みを浮かべました。+1。
Matthis Kohli

11

charおよびvarcharから(Transact-SQL)

varchar [(n | max)]

可変長の非Unicode文字データ。nには、1〜8,000の値を指定できます。maxは、最大ストレージサイズが2 ^ 31-1バイトであることを示します。ストレージサイズは、入力されたデータの実際の長さ+ 2バイトです。入力するデータの長さは0文字にすることができます。varcharのISOシノニムは、charの変化または文字の変化です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.