文字列型

TiDB は、 CHARVARCHARBINARYVARBINARYBLOBTEXTENUM 、およびSETを含むすべての MySQL 文字列型をサポートします。詳細については、 MySQL の文字列型を参照してください。

サポートされているタイプ

CHAR

CHARは固定長の文字列です。 M は列の長さを文字 (バイトではなく) で表します。 M の範囲は 0 ~ 255 ですVARCHAR型とは異なり、データがCHAR列に挿入されると、末尾のスペースが切り捨てられます。

[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

VARCHAR

VARCHARは可変長の文字列です。 M は、列の最大長を文字 (バイトではなく) で表します。 VARCHARの最大サイズは 65,535 バイトを超えることはできません。 VARCHAR行の長さは、最大行長と使用されている文字セットによって決まります。

1 つの文字が占めるスペースは、文字セットによって異なる場合があります。次の表は、1 文字で消費されるバイト数と、各文字セットのVARCHAR列の長さの範囲を示しています。

キャラクターセット文字あたりのバイト数VARCHARカラムの最大長の範囲
アスキー1(0, 65535]
ラテン語11(0, 65535]
バイナリ1(0, 65535]
utf83(0, 21845]
utf8mb44(0, 16383]
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

TEXTタイプ

TEXTは可変長の文字列です。 M は、列の最大長を 0 から 65,535 の文字数で表します。 TEXT行の長さは、使用されている最大行長と文字セットによって決まります。

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

TINYTEXTタイプ

TINYTEXTのタイプはTEXTタイプに似ています。違いは、 TINYTEXTの最大列長が 255 であることです。

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

MEDIUMTEXTタイプ

MEDIUMTEXTのタイプはTEXTタイプに似ています。違いは、 MEDIUMTEXTの最大列長が 16,777,215 であることです。

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

LONGTEXTタイプ

LONGTEXTのタイプはTEXTタイプに似ています。違いは、 LONGTEXTの最大列長が 4,294,967,295 であることです。ただし、 TiDB での単一列の制限のため、TiDB の 1 つの列の最大ストレージ サイズは 6 MB です。

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

BINARY

BINARYのタイプはCHARに似ています。違いは、 BINARYがバイナリ バイト文字列を格納することです。

BINARY(M)

VARBINARY

VARBINARYのタイプはVARCHARに似ています。違いは、 VARBINARYがバイナリ バイト文字列を格納することです。

VARBINARY(M)

BLOB

BLOBは大きなバイナリ ファイルです。 M は、0 から 65,535 の範囲の最大列長をバイト単位で表します。

BLOB[(M)]

TINYBLOB

TINYBLOBのタイプはBLOBに似ています。違いは、 TINYBLOBの最大列長が 255 であることです。

TINYBLOB

MEDIUMBLOBタイプ

MEDIUMBLOBのタイプはBLOBに似ています。違いは、 MEDIUMBLOBの最大列長が 16,777,215 であることです。

MEDIUMBLOB

LONGBLOB

LONGBLOBのタイプはBLOBに似ています。違いは、 LONGBLOBの最大列長が 4,294,967,295 であることです。ただし、 TiDB での単一列の制限のため、TiDB の 1 つの列の最大ストレージ サイズは 6 MB です。

LONGBLOB

ENUM

ENUMは、テーブルの作成時に列の指定で明示的に列挙された許可された値のリストから選択された値を持つ文字列オブジェクトです。構文は次のとおりです。

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # For example: ENUM('apple', 'orange', 'pear')

ENUMデータ型の値は数値として格納されます。各値は、定義順序に従って数値に変換されます。前の例では、各文字列が数値にマップされています。

価値番号
ヌルヌル
''0
'りんご'1
'オレンジ'2
''3

詳細については、 MySQL の ENUM 型を参照してください。

SETタイプ

SETは、0 個以上の値を持つことができる文字列オブジェクトです。各値は、テーブルの作成時に指定された許可された値のリストから選択する必要があります。構文は次のとおりです。

SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # For example: SET('1', '2') NOT NULL

この例では、次の値のいずれかが有効です。

'' '1' '2' '1,2'

TiDB では、 SET型の値は内部でInt64に変換されます。各要素の存在は、バイナリを使用して表されます: 0 または 1. SET('a','b','c','d')として指定された列の場合、メンバーは次の 10 進数値とバイナリ値を持ちます。

メンバー小数値バイナリ値
「あ」10001
'b'20010
'c'40100
'd'81000

この場合、要素が('a', 'c')の場合、2 進数では0101になります。

詳細については、 MySQL の SET タイプを参照してください。