列データ型のBYTEとCHARの違い 質問する

列データ型のBYTEとCHARの違い 質問する

Oracle では、次の違いは何ですか?

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 BYTE),
 ID_CLIENT NUMBER
)

そして

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 CHAR), -- or even VARCHAR2(11)
 ID_CLIENT NUMBER
)

ベストアンサー1

データベースの文字セットが UTF-8 であると仮定します。これは、Oracle の最新バージョンで推奨されている設定です。この場合、一部の文字はデータベースに格納するのに 1 バイト以上かかります。

フィールドを として定義するとVARCHAR2(11 BYTE)、Oracle は最大 11 バイトを格納に使用できますが、一部の文字 (英語以外の文字など) は格納に 1 バイト以上かかるため、実際には 11 文字をフィールドに格納できない場合があります。

フィールドを定義すると、VARCHAR2(11 CHAR)Oracle は、各文字を格納するのに何バイト必要かに関係なく、11 文字を格納するのに十分なスペースを使用できます。1 文字には最大 4 バイト必要になる場合があります。

おすすめ記事