The BLOB and TEXT Types collation. For information about the differences between the  binary  collation of the  binary  character set and the  _bin  collations of nonbinary character sets, see Section 10.8.5, “The binary Collation Compared to _bin Collations” . If strict SQL mode is not enabled and you assign a value to a  BINARY  or  VARBINARY  column that exceeds the column’s maximum length, the value is truncated to fit and a warning is generated. For cases of truncation, to cause an error to occur (rather than a warning) and suppress insertion of the value, use strict SQL mode. See Section 5.1.11, “Server SQL Modes” . When  BINARY  values are stored, they are right-padded with the pad value to the specified length. The pad value is  0x00  (the zero byte). Values are right-padded with  0x00  for inserts, and no trailing bytes are removed for retrievals. All bytes are significant in comparisons, including  ORDER BY  and  DISTINCT operations.  0x00  and space differ in comparisons, with  0x00  sorting before space. Example: For a  BINARY(3)  column,  ’a ’  becomes  ’a \0’  when inserted.  ’a\0’  becomes  ’a\0\0’ when inserted. Both inserted values remain unchanged for retrievals. For  VARBINARY , there is no padding for inserts and no bytes are stripped for retrievals. All bytes are significant in comparisons, including  ORDER BY  and  DISTINCT  operations.  0x00  and space differ in comparisons, with  0x00  sorting before space. For those cases where trailing pad bytes are stripped or comparisons ignore them, if a column has an index that requires unique values, inserting values into the column that differ only in number of trailing pad bytes results in a duplicate-key error. For example, if a table contains  ’a’ , an attempt to store  ’a\0’ causes a duplicate-key error. You should consider the preceding padding and stripping characteristics carefully if you plan to use the BINARY  data type for storing binary data and you require that the value retrieved be exactly the same as the value stored. The following example illustrates how  0x00 -padding of  BINARY  values affects column value comparisons: If the value retrieved must be the same as the value specified for storage with no padding, it might be preferable to use  VARBINARY  or one of the  BLOB  data types instead. Within the  mysql  client, binary strings display using hexadecimal notation, depending on the value of the  --binary-as-hex . For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client” . A  BLOB  is a binary large object that can hold a variable amount of data. The four  BLOB  types are TINYBLOB ,  BLOB ,  MEDIUMBLOB , and  LONGBLOB . These differ only in the maximum length of the values they can hold. The four  TEXT  types are  TINYTEXT ,  TEXT ,  MEDIUMTEXT , and  LONGTEXT . These 11.3.4 The BLOB and TEXT Types Note 2041 mysql>  CREATE TABLE t (c BINARY(3)); Query OK, 0 rows affected (0.01 sec) mysql>  INSERT INTO t SET c = ’a’; Query OK, 1 row affected (0.01 sec) mysql>  SELECT HEX(c), c = ’a’, c = ’a\0\0’ from t; +--------+---------+-------------+ | HEX(c) | c = ’a’ | c = ’a\0\0’ | +--------+---------+-------------+ | 610000 | 0 | 1 | +--------+---------+-------------+ 1 row in set (0.09 sec)