在我的蜂巢表中, session
字段是像格式的字符串:
ip-sessionID-userID
或area-sessionID-userID
有相隔3个或4个领域“ -
”,但用户ID总是最后一个。
我想选择的用户ID,但如何访问的最后一个字段? 在Python中,有这样的: arr[-1]
但在蜂房,如何实现这一目标? 下面的SQL似乎不正确。
select split(session,"\-")[-1] as user from my_table;
谢谢!
reverse(split(reverse(session), '-')[0])
虽然这可能会有点比正则表达式的解决方案更昂贵;)
我认为有以下将比从@arno_v溶液更快,因为它仅颠倒视图阵列元件,而不是整个字符串,并只反向一次:
reverse(split(session, '-'))[0]
在没有一个更方法reverse
,使用数组size()-1
。 该方法是更有效的,因为它不产生中间反转串,它仅适用于阵列。
select array[size(array)-1] as userID
from
( select split(session,'-') array from your_table ) s;