1. ホーム
  2. sql

[解決済み] カラムデータ型におけるBYTEとCHARの違いについて

2022-04-20 12:04:31

質問

Oracleの場合、.NETと.NETの違いは何ですか?

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

そして

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

解決方法は?

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

というフィールドを定義した場合 VARCHAR2(11 BYTE) しかし、非英語文字など、保存に1バイト以上かかる文字があるため、実際には11文字を保存できない可能性があります。

というフィールドを定義することで VARCHAR2(11 CHAR) は、Oracle に対して、11 文字を格納するために十分なスペースを使用できることを示します。1 つの文字に必要なバイト数は最大 4 バイトです。