On Sep 17, 2010, at 7:08 AM, Tompkins Neil wrote:
> Why when I run the command (MySQL 5.1) SELECT SHA1('abc'); is it returned as
> a binary value and not a string value ?
If you mean, why is it a binary rather than a nonbinary (character) string,
that's true of most of the encryption or compression functions in 5.1. This was changed
in 5.5. http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html says:
Many encryption and compression functions return strings for which the result might
contain arbitrary byte values. If you want to store these results, use a column with a
VARBINARY or BLOB binary string data type. This will avoid potential problems with
trailing space removal or character set conversion that would change data values, such as
may occur if you use a nonbinary string data type (CHAR,VARCHAR, TEXT).
Some encryption functions return strings of ASCII characters: MD5(), OLD_PASSWORD(),
PASSWORD(), SHA(),SHA1(). As of MySQL 5.5.3, their return value is a nonbinary string
that has a character set and collation determined by the character_set_connection and
collation_connection system variables. Before 5.5.3, these functions return binary
strings. The same change was made for SHA2() in MySQL 5.5.6.
Oracle Corporation / MySQL Documentation Team
Madison, Wisconsin, USA