SQL並沒有LastIndexOf語法,但可以用下述方式達到LastIndexOf的效果:

範例:從檔案路徑(C:\backup\2010\file123.txt)取得檔名(file123.txt),分隔字元為「\」。

RIGHT(filepath, CHARINDEX('\',REVERSE(filepath))-1)

 

指令語法說明:

CHARINDEX('\','C:\backup\2010\file123.txt')
傳回字串字元的位置,傳回的開始位置是以1為基準,而不是以0為基準,如果找不到則傳回0。
是傳回第1個找到的位置,本範例傳回的結果為「3」。
如果是希望傳回最後一個位置,就需要做一點處理。

 

REVERSE('C:\backup\2010\file123.txt')
傳回字串的反轉順序,本範例傳回的結果為「txt.321elif\0102\pukcab\:C」。

 

CHARINDEX('\','txt.321elif\0102\pukcab\:C')
傳回的結果為「12」。
12-1=11就是檔名的字數。

如果你是要「\」最後出現的位置,只要 字串總長度 - 此傳回結果 + 1 即可:
LEN(filepath) - CHARINDEX('\', REVERSE(filepath)) + 1

 

RIGHT('C:\backup\2010\file123.txt',11)
傳回字串最右側n個字元。
本範例就是取字串(C:\backup\2010\file123.txt),最右邊11個字(file123.txt)。

 

各語法可參考微軟MSDN:

CHARINDEX

REVERSE

RIGHT

LEN


arrow
arrow
    文章標籤
    sql
    全站熱搜

    伊 發表在 痞客邦 留言(0) 人氣()