BLOB
型は、可変長のデータを格納できる、大きなバイナリオブジェクトです。TINYBLOB
、BLOB
、MEDIUMBLOB
、LONGBLOB
の 4 つの BLOB
型では、格納可能な値の最大長のみが異なります。
TINYTEXT
、TEXT
、MEDIUMTEXT
、LONGTEXT
の 4 つの TEXT
型は、4 つの
BLOB
型に対応しており、最大長と記憶容量がそれぞれの
BLOB
型と同じです。BLOB
型と
TEXT
型の唯一の違いは、ソートと比較が、BLOB
値ではケース依存方式で行われ、
TEXT
値ではケース非依存方式で行われる点です。つまり、TEXT
型は大文字と小文字を区別しない
BLOB
型と考えることができます。格納時や取り出し時に、ケースの変換処理は行われません。
BLOB
型または TEXT
型のカラムにそのカラム型の最大長を超える値を割り当てると、カラムのサイズに合わせて値が切り捨てられます。
ほとんどの面において、TEXT
型のカラムは、任意の長さに設定できる
VARCHAR
型のカラムとみなすことができます。同様に、BLOB
型のカラムについては、VARCHAR
BINARY
型のカラムとみなすことができます。相違点は以下のとおりです。
バージョン 4.1.0 以降では、LONG
型と LONG VARCHAR
型は
MEDIUMTEXT
データ型にマップされます。これは互換性を考慮した機能です。
MyODBC
では、BLOB
型の値は LONGVARBINARY
として定義され、TEXT
型の値は
LONGVARCHAR
として定義されます。
BLOB
型と TEXT
型の値は極度に長くなることがあるため、これらの値の使用時には、次に示す一定の制約が適用されます。
GROUP BY
または ORDER
BY
を BLOB
型または
TEXT
型のカラムに使用する場合、カラムの値を固定長のオブジェクトに変換する必要がある。標準的な変換方法としては、次のように、SUBSTRING
関数を使用する。
mysql>SELECT comment FROM tbl_name,SUBSTRING(comment,20) AS substr
->ORDER BY substr;
この変換を行わないと、ソート時にカラムの最初の
max_sort_length
バイトだけが使用される。max_sort_length
のデフォルト値は
1024。この値は、mysqld
サーバの起動時に -O
オプションを指定することによって変更可能。次に示すように、カラムの位置を指定するか、エイリアスを使用することによって、BLOB
型または TEXT
型の値を含む式に対してグループ化操作を行うことができる。
mysql>SELECT id,SUBSTRING(blob_col,1,100) FROM tbl_name GROUP BY 2;
mysql>SELECT id,SUBSTRING(blob_col,1,100) AS b FROM tbl_name GROUP BY b;
BLOB
型または
TEXT
型オブジェクトの最大サイズは、その型によって決まるが、クライアントとサーバ間で実際に送信できる最大値は使用可能なメモリ量と通信バッファのサイズで決まる。メッセージバッファのサイズ(max_allowed_packet
)は変更できるが、サーバ側とクライアント側の両方で変更を行う必要がある。
See 項5.5.2. 「サーバパラメータのチューニング」。
注意: BLOB
型または
TEXT
型のそれぞれの値は、内部で、個別に割り当てられたオブジェクトとして表現されます。これは他のすべてのカラム型と異なります。他のカラム型では、テーブルが開かれたときに、カラムごとに
1 度だけ記憶領域が割り当てられます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.