10.1.7.7 The BINARY Operator

The BINARY operator casts the
string following it to a binary string. This is an easy way to
force a comparison to be done byte by byte rather than
character by character. BINARY
also causes trailing spaces to be significant.

The BINARY attribute in character column
definitions has a different effect. A character column defined
with the BINARY attribute is assigned the
binary collation of the column character set. Every character
set has a binary collation. For example, the binary collation
for the latin1 character set is
latin1_bin, so if the table default
character set is latin1, these two column
definitions are equivalent:

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

The effect of BINARY as a column attribute
differs from its effect prior to MySQL 4.1. Formerly,
BINARY resulted in a column that was
treated as a binary string. A binary string is a string of
bytes that has no character set or collation, which differs
from a nonbinary character string that has a binary collation.
For both types of strings, comparisons are based on the
numeric values of the string unit, but for nonbinary strings
the unit is the character and some character sets support
multibyte characters. Section 11.4.2, “The BINARY and VARBINARY Types”.

The use of CHARACTER SET binary in the
definition of a CHAR,
VARCHAR, or
TEXT column causes the column
to be treated as a binary data type. For example, the
following pairs of definitions are equivalent:

CHAR(10) CHARACTER SET binary
BINARY(10)
VARCHAR(10) CHARACTER SET binary
VARBINARY(10)
TEXT CHARACTER SET binary
BLOB