BINARY タイプと VARBINARY タイプは CHAR および VARCHAR と似ていますが、文字列ではなくバイナリデータを格納する点が異なります。
BINARY と VARBINARY はバイナリ文字セットとバイナリ照合順序を使用します。
BINARY
BINARY タイプは CHAR タイプに似ていますが、バイナリのバイト列を格納します。構文は以下のとおりです:
BINARY[(M)]
オプションの長さパラメータ M は、列の長さをバイト単位で表します。省略された場合、M のデフォルト値である1が使用されます。
BINARY の最大長は CHAR と同じですが、長さはバイト単位です。厳密SQLモードが有効になっていない場合、BINARY 列に割り当てられた値がその列の最大長を超えると、長さを超える部分は切り捨てられ、アラートが生成されます。
BINARY 値を格納する際、指定された長さまで0x00(ゼロバイト)で右詰めされます。挿入されたデータが0x00で終了している場合も、それらは保持され、検索結果に影響を与えないように、末尾の埋め込みバイトは一切削除されません。バイト比較では、ORDER BY や DISTINCT 操作を含む、0x00とスペースは異なり、0x00はスペースよりも先にソートされます。
VARBINARY
VARBINARY タイプは VARCHAR タイプに似ていますが、バイナリのバイト列を格納します。構文は以下のとおりです:
VARBINARY(M)
M は、バイト単位での最大列長を表します。
VARBINARY の最大長は VARCHAR と同じですが、長さはバイト単位です。厳密SQLモードが有効になっていない場合、VARBINARY 列に割り当てられた値がその列の最大長を超えると、長さを超える部分は切り捨てられ、アラートが生成されます。
VARBINARY の場合、データを挿入する際には埋め込みが不要であり、末尾の埋め込みバイトは一切削除されません。バイト比較では、ORDER BY や DISTINCT 操作を含む、0x00とスペースは異なり、0x00はスペースよりも先にソートされます。