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