-----------------------------------------
如果只看解決方法,直接看最后。。。
-----------------------------------------
今兒碰到了這么種情況,表中有一個字段,格式是這樣的
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'
解決。