OceanBaseデータベースは、BLOBとTEXTの2種類のラージオブジェクトデータ型をサポートしています。
BLOB 型には TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB が含まれます。TEXT 型には TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT が含まれます。
BLOB 型はバイナリ文字列を格納し、BLOB の比較とソートは各バイトの値に基づきます。TEXT 型は非バイナリ文字列を格納し、TEXT 型の比較とソートはその文字セットの照合順序に基づきます。TEXT 型に BINARY 文字セットを指定すると、BLOB と同等になります。
非厳密モードでは、ユーザーは BLOB または TEXT 列に列の最大長を超える文字列を挿入でき、超過分は切り捨てられます。厳密モードでは、このようなシナリオはエラーとなります。最大長を超える部分がすべてスペースである場合、厳密モードを有効にしているかどうかにかかわらず、エラーは発生しません。
TEXT および BLOB 型については、挿入時に末尾にスペースが追加されず、クエリ時にも末尾のスペースは削除されません。
ほとんどの場合、BLOB を十分に長い VARBINARY 型と見なし、同様に TEXT を VARCHAR 型と見なすことができます。違いは、BLOB および TEXT 列にはデフォルト値を設定できない点です。
注意
TEXT または BLOB 列にインデックスを作成することはサポートされていません。
TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT の4種類のうち、明示的に長さを指定できるのは TEXT のみです。OceanBaseデータベースは、ユーザーが指定した長さに基づいて、4種類の型の中から適切な型を推定します。BLOB 型も同様です。例:
obclient> CREATE TABLE t(c1 TEXT(30), c2 TEXT(300), c3 TEXT(30000), c4 TEXT(10000000));
Query OK, 0 rows affected
obclient> DESC t;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| c1 | tinytext | YES | | NULL | |
| c2 | text | YES | | NULL | |
| c3 | mediumtext | YES | | NULL | |
| c4 | longtext | YES | | NULL | |
+-------+------------+------+-----+---------+-------+