我有一种情况,我想根据某些条件仅替换 hive 中列的最后一个字符。
我的代码如下,

select
case
    when amtsv111 >= 0 then
    case
        when substring(amtsv111,-1,1) = '0' then regexp_replace(amtsv111,substring(amtsv111,-1,1),'{')
        when substring(amtsv111,-1,1) = '1' then regexp_replace(amtsv111,substring(amtsv111,-1,1),'A')
        end

因此对于此代码,我得到的结果为:
15101    A5A0A

而我想要的结果如下:
15101    1510A

有人可以帮我吗?

最佳答案

您可以这样做:

select (case when amtsv111 like '%0' then concat(substring(amtsv111, 1, length(amtsv111) - 1), '{'
             when amtsv111 like '%1' then concat(substring(amtsv111, 1, length(amtsv111) - 1), 'A'
             else amtsv111
        end)

关于sql - 最后位置的字符只能替换-Hive,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47982934/

10-11 07:26