使用hql在前面附加零

7nbnzgx9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(456)

输入:1092-04-1
我已将上述数据作为字符串加载。如果第一个字符串的长度小于5,我需要在前面加0。
类似地,如果第二个字符串的长度小于3,并且如果第三个字符串的长度小于2,则使用hql。
期望输出:01092-004-01
尝试使用下面的查询,0只附加到第一个字符串。

  1. select concat(substr("00000",0,10-length(colname)),colname) from table name;

输出:01092-04-1。
请提出解决方案。蒂亚。

h9a6wy2h

h9a6wy2h1#

  1. select printf('%05d-%03d-%02d',x[0],x[1],x[2])
  2. from (select split('1092-04-1','-') as x) t
  3. ;
ha5z0ras

ha5z0ras2#

  1. select concat_ws('-',
  2. lpad(your_col_splitted[0],5,'0'),
  3. lpad(your_col_splitted[1],3,'0'),
  4. lpad(your_col_splitted[2],2,'0')
  5. )
  6. from(
  7. select split('1092-04-1','-') as your_col_splitted
  8. )s;
  1. OK
  2. 01092-004-01
  3. Time taken: 0.05 seconds, Fetched: 1 row(s)

将“1092-04-1”替换为您的列。

相关问题