Hive 如何删除前导零';来自配置单元/黑斑羚中的字符串列的

Hive 如何删除前导零';来自配置单元/黑斑羚中的字符串列的,hive,Hive,如果金额为“$0012304”,则我希望结果为“$12304”,并且 如果金额为“$0000000”,则为“$0” 当我使用regexp\u replace(amount,^?0','')时,它将替换列中的所有零,并给出$1234而不是$12304的结果 删除所有前导零后,我希望在金额前面保留“$”。根据链接问题(可能重复),您可以更改选择以获得所需效果。在这里,我们匹配字符串开头的“$”,后跟任意数量的0,删除它,然后将其添加回 SELECT some_string, REGEXP_RE

如果金额为“$0012304”,则我希望结果为“$12304”,并且 如果金额为“$0000000”,则为“$0”

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


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

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

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

*编辑以在每个反馈中添加额外的斜杠。

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

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

*编辑后可为每个反馈添加额外的斜杠。

您可以尝试以下代码:

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

首先使用子字符串,然后将其替换为$

您可以尝试以下代码:

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

首先使用子字符串,然后将其替换为$

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

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

$1.0
如果数字仅为整数,则使用
bigint
int
代替
double

如果美元符号不存在且也有全零,则此方法将起作用


此处测试:

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

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

$1.0
如果数字仅为整数,则使用
bigint
int
代替
double

如果美元符号不存在且也有全零,则此方法将起作用


此处测试:

欢迎!为此,请注意,如果您遵守规则,请在发布之前搜索您的问题。这将节省每个人的时间。此处是答案的链接。删除所有前导零后,我希望在金额前面保留“$”符号。欢迎!因此,请注意,如果您遵守规则,请在发布之前搜索您的问题。这将节省每个人的时间。这里是答案的链接。删除所有前导零后,我想在金额前面保留“$”符号。非常感谢!但在“^\$0+”中添加了一个“\”之后,它就起作用了,很高兴你找到了它!谢谢但仍然存在的挑战是,当金额为“$000000”时,我希望它像“$0”一样,如果我使用上述方法,那么它在列中只显示“$”而不是“$0”
if(stripped_string='$','$0',stripped_string)
这超出了我的理解。谢谢!但在“^\$0+”中添加了一个“\”之后,它就起作用了,很高兴你找到了它!谢谢但仍然存在的挑战是,当金额为“$000000”时,我希望它像“$0”一样,如果我使用上述方法,那么它在列中只显示“$”而不是“$0”
if(stripped_string='$','$0',stripped_string)
这超出了我的理解。