输入:1092-04-1我已将上述数据作为字符串加载。如果第一个字符串的长度小于5,我需要在前面加0。类似地,如果第二个字符串的长度小于3,并且如果第三个字符串的长度小于2,则使用hql。期望输出:01092-004-01尝试使用下面的查询,0只附加到第一个字符串。
select concat(substr("00000",0,10-length(colname)),colname) from table name;
输出:01092-04-1。请提出解决方案。蒂亚。
h9a6wy2h1#
select printf('%05d-%03d-%02d',x[0],x[1],x[2])from (select split('1092-04-1','-') as x) t ;
select printf('%05d-%03d-%02d',x[0],x[1],x[2])
from (select split('1092-04-1','-') as x) t
;
ha5z0ras2#
select concat_ws('-', lpad(your_col_splitted[0],5,'0'), lpad(your_col_splitted[1],3,'0'), lpad(your_col_splitted[2],2,'0') ) from( select split('1092-04-1','-') as your_col_splitted )s;
select concat_ws('-',
lpad(your_col_splitted[0],5,'0'),
lpad(your_col_splitted[1],3,'0'),
lpad(your_col_splitted[2],2,'0')
)
from(
select split('1092-04-1','-') as your_col_splitted
)s;
OK01092-004-01Time taken: 0.05 seconds, Fetched: 1 row(s)
OK
01092-004-01
Time taken: 0.05 seconds, Fetched: 1 row(s)
将“1092-04-1”替换为您的列。
2条答案
按热度按时间h9a6wy2h1#
ha5z0ras2#
将“1092-04-1”替换为您的列。