繁体   English   中英

在 HIVE 中连接和转换

[英]concat and cast in HIVE

我有许多记录,其中包括几列带前导零的列。 我想删除前导零并用连字符将 3 列合并为一列。 我正在使用 HIVE。

Column1    column2    column3
0123        12342567    001


desired output
123-12342567-1

要删除前导零,您可以使用 regexp_replace(col, '^0+', ''),然后使用 concat_ws() 连接:

与 mytable 为( select
'0123' 列 1,'12342567' 列 2,'001' 列 3)

select concat_ws('-',
                 regexp_replace(Column1,'^0+',''),
                 regexp_replace(Column2,'^0+',''),
                 regexp_replace(Column3,'^0+','')

                )
  from mytable;

结果:

123-12342567-1

如果某些列值为NULLconcat_ws将与分隔符一起跳过它。 例如,如果 column2 是 NULL,则结果将为123-1

如果要将NULL值转换为其他值,请使用NVL(col, 'value if NULL') function,例如regexp_replace(NVL(column2, ''),'^0+','')将返回空字符串NULL 和 concat_ws 将返回123--1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM