我想获取BINARY字符串的前四个字节并将其解释为数字。
(背景:我有一个已经UNHEX进入BINARY(20)列的SHA1哈希,我想创建一个PARTITION BY HASH表达式,它接受SHA1值的前四个字节并转换或转换它到数值,因为预期PARTITION BY HASH表达式。)
真的不需要四个字节;只是短暂的几个字节,可以被操作成一个整数值。
答案 0 :(得分:0)
我知道这已经很晚了,但是,
试试这个:
SELECT CONV(LEFT(HEX(<column_with_bin_str>),8), 16, 10) FROM Table;
这会将二进制字符串转换为十六进制,从转换后的字符串中取出前8个十六进制字符并将其转换为十进制字符。
我们取前8个十六进制字符,因为需要两个十六进制字符来表示一个字节。
答案 1 :(得分:-1)
您可以组合以下两个函数::
从字符串str返回一个子字符串len个字符,从...开始 位置pos。
在不同的数字基数之间转换数字。返回一个字符串 数字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