从给定的输入生成最高数字,并使用配置单元将0替换为9 [英] generate Highest Number from the given Input and replacing 0 by 9 using hive
本文介绍了从给定的输入生成最高数字,并使用配置单元将0替换为9的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人能帮助/建议我如何处理配置单元中的以下情况吗?
我有一列包含一些值,其中一些数字(在6位数字之后)后有0,我需要将所有这些0替换为9。如果我在5位数字之后有0,那么我需要在开始时包括0,然后再次需要替换6位数字后的0。PFB一些样本记录和预期输出。
Input output
1234560000000 1234569999999
123450000000 0123459999999
12340000000 0012349999999
1230000000 0001239999999
所以这里基本上我需要从右到左检查。1234560000000
在这里,我将从右(0)开始检查,一旦找到任何数字,我会将所有的0替换为9,如果0以外的数字计数小于6,则在开头添加0。
敬请推荐
推荐答案
将字符串拆分为两部分:末尾的数字和其他部分,将零替换为9,然后连接。
演示:
with mytable as (
select '1234560000000' as input union all
select '123450000000' union all
select '12340000000' union all
select '1230000000'
)
select lpad(concat(splitted[0], translate(splitted[1],'0','9')),13,0)
from
(
select split(regexp_replace(input,'(\d*?)(0+)$','$1|$2'),'\|') splitted
from mytable
)s
结果
"1234569999999"
"0123459999999"
"0012349999999"
"0001239999999"
这篇关于从给定的输入生成最高数字,并使用配置单元将0替换为9的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文