Impala conv函数不一致地将base-16转换为base-2

kqhtkvqz  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(399)

我有十六进制字符串,我需要转换为基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位(全部为零)。
有人能解释为什么会发生这种情况,以及我如何纠正这种行为吗?

enxuqcxy

enxuqcxy1#

impala/hive将多个前导零视为冗余并对其进行修剪。我不确定是否可以打开/关闭此行为。我使用lpad函数解决了这个问题。

相关问题