Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display binary(16) column as hex in mysql

Tags:

mysql

hex

binary

Given a binary(16) column, how do I display its value as a hexadecimal number? I've been experimenting in the console a little below, and I'm not getting the results I expect. Could it be that I'm not converting numbers to binary properly?

I have the following sample query: select hex(cast(10 as binary)),

but the output is rather unexpected: 3130.

Basically, it appears to just take the decimal representation of the number, and insert a 3 digit before each digit, e.g. 2 -> 32, 22 -> 3232, 678 -> 363738, etc.

If I specify a length for the binary data type (e.g. binary(16)), I get the same behavior, except that it gets padded on the right with the required number of 0s.

Obviously, that's not what I'm looking for. What am I missing?

EDIT: just tried convert(678, binary) instead of cast, same behavior.

like image 686
gzak Avatar asked Dec 05 '16 17:12

gzak


2 Answers

Why make things complicated? I just use this to display the value of a BINARY(16) column:

SELECT HEX(colname);

like image 115
lfjeff Avatar answered Nov 03 '22 00:11

lfjeff


You can also set your mysql client to display binary data as hex, as described here:

Does the mysql CLI tool provide a way to display binary data in a console-friendly manner?

mysql --binary-as-hex

or

[client]
binary-as-hex = true
like image 39
Alex Avatar answered Nov 03 '22 01:11

Alex