web-dev-qa-db-ja.com

Nvarcharの長さの決定

Varcharとnvarcharについてすべて読みました。しかし、私が思う単純な質問に対する答えは見当たりませんでした。 nvarchar列の長さをどのように決定しますか? varcharの場合、これは非常に単純です。たとえば、私の説明は100文字にすることができるので、varchar(100)を定義します。今、私たちはあらゆる言語を国際化してサポートする必要があると言われています。これは、説明列をnvarchar(200)に変更する必要があることを意味しますか?つまり、単に長さを2倍にする必要がありますか? (そして、私は今のところ国際化に関係する他のすべての問題を無視しています。)

そんなに簡単ですか?

11
Kane Jeeves

一般的には、実際にはvarcharの場合と同じです。数値は、データ長ではなく、最大文字数のままです。

nvarchar(100)は100文字を許可します(SQL Serverでは200バイトを消費する可能性があります)。

ただし、異なる文化では同じことを表現するためにより多くの文字が必要になる可能性があるという事実を考慮に入れることをお勧めします。

ただし、これの例外は、SC照合順序( 補足文字 をサポート)を使用している場合です。その場合、1文字で最大4バイトかかる可能性があります。

したがって、最悪の場合は、宣言された文字値を2倍にすることです。

15
Martin Smith

以下のコードを実行することで、簡単な実験で答えを得ることができます。

DECLARE @a varchar(4);  SET @a = '123456';  SELECT @a;
DECLARE @b nvarchar(4);  SET @b = '123456';  SELECT @b;
0
Zheng Yiong Lai