如果金额为“ $ 0012304”,那么我想要的结果为“ $ 12304”,并且 如果金额为“ $ 0000000”,则为“ $ 0”
当我使用regexp_replace(amount,'^?0', '')
时,它将替换列中的所有零,并给出$ 1234而不是$ 12304的结果。
在删除所有前导零之后,我想在金额前面保留“ $”。
答案 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
如果数字仅为整数,请使用bigint
或int
代替double
如果没有美元符号且全为零,则此方法将起作用。