impala split_part 函数不接受负索引

impala split_part function not accepting negative indexing

我正在尝试访问 split_part 函数中的倒数第二个元素。如我所见,您应该能够使用负索引从右向左查看。 然而,在 impala 中出现“无效字段位置”错误

SELECT split_part(string1;string2;string3;string4, ";", -2)
SELECT split_part(string3;string4, ";", -2)
SELECT split_part(string2;string3;string4, ";", -2)

我希望为上述所有示例返回“string3”。 非常感谢 Impala 中有关如何执行此操作的任何帮助

该参数必须 >=1。所以你可以使用下面的解决方法 - 你计算最后一个字符串的位置,然后相应地使用拆分部分。 您可以使用以下代码。

SELECT split_part(stc_column, ';', length(stc_column)-length(replace(stc_column,';','')))

这是您的输入方案的输出 -

SELECT split_part('string2;string3;string4', ';', length('string2;string3;string4') - length(replace('string2;string3;string4',';',''))  
)