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はスペースより前に並べ替えられます。