Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


10.1.7.7 BINARY 演算子

BINARY 演算子は、それに続く文字列をバイナリ文字列にキャストします。これは、比較を文字ごとでなくバイトごとに強制的に実行させる簡単な方法です。また、BINARY では末尾の空白文字が重要になります。

mysql> SELECT 'a' = 'A';
        -> 1
mysql> SELECT BINARY 'a' = 'A';
        -> 0
mysql> SELECT 'a' = 'a ';
        -> 1
mysql> SELECT BINARY 'a' = 'a ';
        -> 0

BINARY strCAST(str AS BINARY) の略でもあります。

文字カラム定義内の BINARY 属性には別の効果があります。BINARY 属性で定義された文字カラムには、カラム文字セットのバイナリ照合順序が割り当てられます。すべての文字セットにバイナリ照合順序があります。たとえば、latin1 文字セットのバイナリ照合順序は latin1_bin です。このためテーブルのデフォルト文字セットが latin1 の場合、次の 2 つのカラム定義は同等になります。

CHAR(10) BINARY
CHAR(10) CHARACTER SET latin1 COLLATE latin1_bin

BINARY のカラム属性としての効果は、MySQL 4.1 より前の効果とは異なります。以前は、BINARY は、バイナリ文字列として扱われたカラムになっていました。バイナリ文字列は、文字セットや照合順序がないバイトの文字列であり、バイナリ照合順序を持つ非バイナリ文字列とは異なります。どちらのタイプの文字列についても、比較は文字列単位の数値に基づいて行われますが、非バイナリ文字列については、単位は文字であり、文字セットによってはマルチバイト文字をサポートします。セクション11.4.2「BINARY および VARBINARY 型」を参照してください。

CHARVARCHAR、または TEXT カラムの定義で CHARACTER SET binary を使用すると、このカラムはバイナリデータ型として扱われます。たとえば、次のペアになった定義は同等です。

CHAR(10) CHARACTER SET binary
BINARY(10)

VARCHAR(10) CHARACTER SET binary
VARBINARY(10)

TEXT CHARACTER SET binary
BLOB