如何在hive中对多分隔符字符串使用字符串分割功能



我的字符串数据如下:

data = 'ABCD/~DEFG/~HJKL/~MNOP'

我试着用下面的查询

select split(data,'[/~]')[1] from test_table;

预期输出:ABCD原始输出:(空间)

当我尝试对索引[2]进行相同的查询时,其工作

select split(data,'[/~]')[2] from test_table;

预期输出:DEFG原始输出:DEFG

我的观察:它对每个偶数指数都工作得很好,比如0,2,4…并且它正在填充奇数索引数,如1,3,5..

有人能帮我解决这个问题吗?

您需要使用split作为:split('\/~'):

hive> select split('word1/~word2/~word3','\/~')[0] as word1;
word1

,检查我的答案:load-data-into-hive-with-custom-delimiter使用MultiDelimitSerDe
和其他选项使用regexp_extract: hive-split-string-using-regex


示例:应该有一些简单的正则表达式来实现这一点,但我在这里的以下示例之后提出了这个:

hive> select regexp_extract('word1/~word2/~word3','^(\w.*)\/~(\w.*)$',2) as word3;
word3
hive> select regexp_extract('word1/~word2/~word3','^(?:([^/~]+)\/~?){1}',1) as word1;
word1
hive> select regexp_extract('word1/~word2/~word3','^(?:([^/~]+)\/~?){2}',1) as word2;
word2

最新更新