回答:
データベースの文字セットがUTF-8であるとします。これは、Oracleの最近のバージョンで推奨されている設定です。この場合、一部の文字はデータベースに格納するのに1バイト以上かかります。
フィールドをとして定義するとVARCHAR2(11 BYTE)
、Oracleは最大11バイトのストレージを使用できますが、実際にはフィールドに11文字を格納できない場合があります。これは、英語以外の文字など、一部のバイトを格納するために1バイトを超えるためです。
VARCHAR2(11 CHAR)
Oracleに指示したとおりにフィールドを定義することにより、各文字を格納するのに必要なバイト数に関係なく、11文字を格納するのに十分なスペースを使用できます。1つの文字に最大4バイトが必要な場合があります。
1つは正確に11バイトのスペース、もう1つは正確に11文字のスペースです。Unicodeバリアントなどの一部の文字セットでは、1文字あたり複数のバイトが使用される場合があるため、エンコーディングによっては、11バイトのフィールドに11文字未満のスペースがある場合があります。
http://www.joelonsoftware.com/articles/Unicode.htmlも参照してください
VARCHAR2
。VARCHAR2(4000 CHAR)
一部の文字が複数バイトのストレージを必要とする場合、a を宣言すると4000文字未満が許可されます。