mysql - 如何将BINARY(4)转换为整数

时间:2013-03-05 06:12:36

标签: mysql hash casting binary

我想获取BINARY字符串的前四个字节并将其解释为数字。

(背景:我有一个已经UNHEX进入BINARY(20)列的SHA1哈希,我想创建一个PARTITION BY HASH表达式,它接受SHA1值的前四个字节并转换或转换它到数值,因为预期PARTITION BY HASH表达式。)

真的不需要四个字节;只是短暂的几个字节,可以被操作成一个整数值。

2 个答案:

答案 0 :(得分:0)

我知道这已经很晚了,但是,

试试这个:

SELECT CONV(LEFT(HEX(<column_with_bin_str>),8), 16, 10) FROM Table;

这会将二进制字符串转换为十六进制,从转换后的字符串中取出前8个十六进制字符并将其转换为十进制字符。

我们取前8个十六进制字符,因为需要两个十六进制字符来表示一个字节。

答案 1 :(得分:-1)

您可以组合以下两个函数::

SUBSTRING(str,pos,len)

  

从字符串str返回一个子字符串len个字符,从...开始   位置pos。


CONV(N,from_base,to_base) -

  

在不同的数字基数之间转换数字。返回一个字符串   数字N的表示,从base_base转换为base   to_base。


修改

如果您需要获取使用10011001的{​​{1}}的前4位数字:

1001 = 9

如果你有前导零,你可以使用LPAD函数,例如二进制值SELECT CONV(SUBSTR(10011001, 1, 4), 2, 10) 的前4位数01001100,你可以这样做:< / p>

0100 = 4

请参阅SQLFiddle