BINARY と VARBINARY タイプは、非バイナリ文字列ではなく、バイナリ文字列を含んでいる
ところ以外で CHAR と VARCHAR に似ています。それは、それらが文字の文字列ではなく、
バイトの文字列を含んでいるという事です。これは、それらが文字セットを持たず、ソートと比較は
値の中の数値バイトに基づいている。

許容される最大長は、CHAR と VARCHAR と同様で、BINARY と VARBINARY の
長さは文字ではなく長さのバイトであるという事以外、BINARY と VARBINARY と同じです。

VARCHAR、VARBINARY、そして BLOB と TEXT タイプは可変長タイプです。
それぞれが必要とする記憶容量はこれらの要因によって決まります。

* カラム値の実長さ
* カラムの可能最大長さ
* カラムに使用される文字セット

例えば、VARCHAR(10) カラムは最大長さ10の文字列を保持する事ができます。
カラムが latin1 文字セットを利用すると仮定すると(一文字につき1バイト)、実際の記憶容量は
文字列の長さ(L)と、その文字列の長さを記録する1バイトです。’abcd’ 文字列では、L は4で、
必要とする記憶容量は5バイトです。もし同じカラムが代わりに VARCHAR(500) として宣言されていたら、
その文字列 ‘abcd’ は 4 + 2 = 6 バイトを必要とします。カラム長は255以上なので、
プリフィックスには1バイトではなく2バイトが要求されます。

特定の CHAR、VARCHAR、または TEXT カラム値を格納するのに利用される バイト 数を計算するには、
そのカラムに利用される文字セットを考慮に入れなければいけません。特に、utf8 ユニコード文字セットを
利用する時には、全ての utf8 文字セットが同じバイト数を利用するわけではないという事を覚えておく
必要があります。

注:VARCHAR や VARBINARY カラムの 有効 最大長は65,532です。

VARBINARY(M) L + 1 バイト 一方で L <= M そして 0 <= M <= 255 (下のメモを参照) または L + 2 バイト、 一方で L <= M そして 256 <= M <= 65535 (下のメモを参照). 10.4.2. BINARY と VARBINARY タイプ


10.5. データタイプが必要とする記憶容量

DB 文字コードセットの変換

Comments are closed.

Post Navigation