Oracle データベースで文字列を定義するときに、BYTE
と CHAR
のどちらを選択するかは、効率的なデータ ストレージと正確な表現にとって重要です。 この違いは、割り当てられるスペースの量と文字の処理方法に影響します。
次の例を考えてみましょう:
<code class="language-sql">CREATE TABLE CLIENT ( NAME VARCHAR2(11 BYTE), ID_CLIENT NUMBER );</code>
これにより、11 バイトを予約する NAME
列が作成されます。 ただし、これは 11 個の 文字 を保持できることを保証するものではありません。 マルチバイト文字 (英語以外の言語で一般的) は、割り当てられたスペースを超える可能性があり、切り捨てやデータ破損につながる可能性があります。
これを次と比較してください:
<code class="language-sql">CREATE TABLE CLIENT ( NAME VARCHAR2(11 CHAR), -- or VARCHAR2(11) ID_CLIENT NUMBER );</code>
この NAME
列には、1 文字あたりのバイト サイズに関係なく、11 文字を格納するのに十分な領域が割り当てられます。 文字に最大 4 バイトが必要な場合でも、列はそれを収容します。
基本的な違い: BYTE
は固定バイト数を割り当てるのに対し、CHAR
は文字セットと指定された文字数に基づいてスペースを動的に割り当てます。
特に多様な文字セットで信頼性の高い文字ストレージを実現するには、CHAR
を使用する (または、BYTE
がデフォルトの CHAR
である CHAR
/BYTE
指定を省略する) ことを強くお勧めします。
以上がOracle における BYTE と CHAR: 文字ストレージとして CHAR を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。