文字列データ型は、数字やアルファベットなどの文字を文字列として格納します。このセクションでは、主に最も一般的に使用される文字データ型であるCHAR型、VARCHAR型、BINARY型、およびVARBINARY型について説明します。
CHAR型とVARCHAR型
CHAR 型と VARCHAR 型は似ていますが、格納と取得の方法、および末尾のスペースの処理方法が異なります。
CHAR 型と VARCHAR 型はどちらも最大長を指定できます。例えば、CHAR(30) は最大30文字を格納できます。
CHAR 型の列で指定可能な長さの範囲は0〜256です。CHAR 型は、書き込まれた値の末尾に連続するスペースを削除してから格納します。取得時に PAD_CHAR_TO_FULL_LENGTH SQLモードが有効な場合、取得した値を最大長までスペースで補完します。
VARCHAR 型の列で指定可能な長さの範囲は0〜262144です。有効な最大長は262144バイトです。
CHAR 型と VARCHAR 型では、挿入するデータの長さが最大長を超えた場合、sql_mode に STRICT_TRANS_TABLES 設定が含まれているとエラーが発生し、含まれていない場合は自動的に最大長まで切り捨てて警告が表示されます。
VARCHAR 型と CHAR 型を格納する際の比較方法は、照合順序の設定に基づきます。
BINARY型とVARBINARY型
BINARY 型と VARBINARY 型は CHAR 型と VARCHAR 型に似ていますが、バイナリデータを格納する点が異なります。
BINARY 型と VARBINARY 型の最大長は CHAR 型と VARCHAR 型と同じですが、長さはバイト単位で計算されます。
BINARY 型を格納する際、格納対象の値の右側に0x00(すなわち『\0』)を追加して最大長にします。
厳密モードが有効な場合、最大長を超えるデータの挿入はエラーになります。非厳密モードの場合は、データが切り捨てられて警告が表示されます。
BINARY 型の比較では、末尾の空バイトが明示的に比較されます。0x00はスペースとは異なり、0x00はスペースよりも前にソートされます。