如何从Hive / Impala中的字符串列中删除前导零

时间:2019-03-20 16:26:52

标签: hive

如果金额为“ $ 0012304”,那么我想要的结果为“ $ 12304”,并且 如果金额为“ $ 0000000”,则为“ $ 0”

当我使用regexp_replace(amount,'^?0', '')时,它将替换列中的所有零,并给出$ 1234而不是$ 12304的结果。

在删除所有前导零之后,我想在金额前面保留“ $”。

3 个答案:

答案 0 :(得分:0)

基于链接的问题(可能有重复项),您可以更改选择以获得所需的效果。在这里,我们在字符串的开头匹配“ $”,然后匹配任意数量的0,将其删除,然后再添加回去。

SELECT some_string,
   REGEXP_REPLACE(some_string, "^\\$0+", '$') stripped_string
FROM db.tbl

*已编辑,可在每个反馈中添加一个额外的斜杠。

答案 1 :(得分:0)

您可以尝试以下代码:

select regexp_replace(substring('$0012304',2),'^0+?','$') from hive_table;

第一个子字符串,然后将其替换为$。

答案 2 :(得分:0)

删除美元符号(如果存在),转换为双精度符号(它将删除前导零),并与美元符号连接:

select concat('$',cast(regexp_replace('$000001','^\\$','') as double))

结果:

$1.0

如果数字仅为整数,请使用bigintint代替double

如果没有美元符号且全为零,则此方法将起作用。

在这里测试:http://demo.gethue.com/hue/editor?editor=291139