当有外来字符时,为什么不能正确填充空格字符?

bwleehnv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(276)

我的目标是导出具有固定宽度列的文件。我有以下hql:

insert overwrite table destination_table
select concat(rpad(p.artist_name,40," "),rpad(p.release_name,40," "))
from source_table;

“destination_table”是写入文件的外部表。当艺术家名称和发行名称包含普通英文字符时,没有问题,结果如下:

paulo kuong[29 space characters]I am terribly stuck album

我有40个字符的固定宽度列。但是,当字符串不是英语时,我得到:

장재인[31 space characters]다른 누구도 아닌 너에게

假设是37个空格字符。lpad似乎无法正确填充空格。当我做“长度”(장재인)" 它返回3个字符。。所以在Hive中lpad和rpad发生了一些奇怪的事情
你知道吗?

qyzbxkaa

qyzbxkaa1#

我以为 rpad 按预期工作。根据文件,

rpad(string str, int len, string pad) 

# Returns str, right-padded with pad to a length of len

所以,在你的情况下 장재인[31 space characters] 应该是40岁。
简言之 장재인 应该是9。
我办了个登记手续 python ,则为 장재인 确实是9。

>>> a = '장재인'
>>> len(a)
9

相关问题