如果金额是"$0012304“,那么我希望结果像"$12304”,如果金额是"$0000000“,那么"$0”
当我使用regexp_replace(amount,'^?0', '')
时,它将替换列中的所有零,并给出$1234而不是$12304的结果。
我想在删除所有前导零之后,将"$“放在amount前面。
发布于 2019-03-21 04:02:40
删除美元符号如果存在,转换为双精度(它将删除前导零),与美元符号连接:
select concat('$',cast(regexp_replace('$000001','^\\$','') as double))
结果:
$1.0
如果数字仅为整数,请使用bigint
或int
而不是double
如果美元符号不存在并且全为零,则此方法将起作用。
发布于 2019-03-21 01:34:03
根据链接的问题(可能重复),您可以更改选择以获得您想要的效果。在这里,我们匹配字符串开头的“$”,后跟任意数量的0,删除它,然后再添加回来。
SELECT some_string,
REGEXP_REPLACE(some_string, "^\\$0+", '$') stripped_string
FROM db.tbl
*已编辑,以便为每个反馈添加额外的斜杠。
发布于 2019-03-21 01:39:34
您可以尝试以下代码:
select regexp_replace(substring('$0012304',2),'^0+?','$') from hive_table;
第一个子字符串,然后用$替换它。
https://stackoverflow.com/questions/55265683
复制相似问题