sql - 最后位置的字符只能被替换 - Hive

标签 sql hadoop hive hiveql

我有一种情况,我只想根据特定条件替换配置单元中一列中的最后一个字符。 我的代码如下,

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/

相关文章:

hadoop - hive :无法填充索引

bash - “moveToLocal: Option ' -moveToLocal'尚未执行什么操作。”手段?

hadoop - 不允许用户冒充匿名 (state=08S01,code=0) org.apache.hadoop.security.authorize.AuthorizationException

hadoop - 无法在 spark 中使用配置单元支持创建 sql 上下文

hadoop - COUNT (*) 在 INSERT INTO 或 TRUNCATE 之后返回过期的行数

Hadoop 初学者 - 数据摄取和分析

mysql - 当某些id的日期相同但时间不同时创建mysql查询

sql - 根据列值 SQL 将一行拆分为多行

php - 仅在 MySQL 列中自动标记日期

mysql - SQL向MySQL结果集添加汇总行