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または
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 | |
+-------+------------+------+-----+---------+-------+