从给定的输入生成最高数字,并使用配置单元将0替换为9 [英] generate Highest Number from the given Input and replacing 0 by 9 using hive

查看:0
本文介绍了从给定的输入生成最高数字,并使用配置单元将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆