我有十六进制字符串,我需要转换为基2二进制字符串,但我不能让 Impala 执行一致。
例如
我希望这句话:
select conv('0020008000',16,2) union
select conv('000006040A',16,2);
返回:
0000 0000 0010 0000 0000 0000 1000 0000 0000 0000
0000 0000 0000 0000 0000 0110 0000 0100 0000 1010
然而,它却回来了:
0000 0000 0010 0000 0000 0000 1000 0000 0000 0000
1100 0000 1000 0001 010
第一个十六进制值转换正确,但第二个缺少前21位(全部为零)。
有人能解释为什么会发生这种情况,以及我如何纠正这种行为吗?
1条答案
按热度按时间enxuqcxy1#
impala/hive将多个前导零视为冗余并对其进行修剪。我不确定是否可以打开/关闭此行为。我使用lpad函数解决了这个问题。