Hive split分割后獲取最后一段


-----------------------------------------

如果只看解決方法,直接看最后。。。

-----------------------------------------

今兒碰到了這么種情況,表中有一個字段,格式是這樣的

a\b\c
a\b
a\b\c\d

是根據符號 '\' 隔開的,現在需要取每個的最后一段,先做個split,字段名稱為TXTMD

select split(TXTMD,'\\\\') as txtmd from xx_table

此時獲取到的是一個數組,如果字段為  a\b\c\d,那么得到的結果為 [a,b,c,d]

那么現在我們如何來拿到最后一段呢,首先想到根據索引來取,但是字段內容在split后並不知道有幾段,所以首先想到了size()函數獲取split后的size,如下

select size(split(TXTMD,'\\\\')) as size from xx_table

如果TXTMD='a\b\c\d',那么得到的結果為 4 ,現在可以獲取到最后一段的索引了,就想着根據索引求了,如下

select split(TXTMD,'\\\\')[size(split(TXTMD,'\\\\'))-1] as last from xx_table

幻想着可以的樣子,然而會報錯

后來腦洞大開,想着完全可以先把這個字符串翻轉過來(reverse),split后直接去索引為0的,然后再翻轉回去,have a try.....

select reverse(split(reverse(TXTMD),'\\\\')[0]) as size from xx_table

獲得結果 'd'

解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM