2013-06-03 47 views
0
ABC:123 UVW XYZ NN-000 

什麼是在使用substr()後最後一個空格後得到數值的最佳方法?在這種情況下,我想獲得NN-000,但是在大於或小於6個字符的情況下也能夠獲得最後一個值。最後一個索引的子串

+0

你是什麼「的意思,但也能獲得在**更大的情況下最後的價值** **或**少於**字符「 –

+0

@pratik gard,最後一個空格後的字符串長度可以多於或少於6個字符。 'NN-00'' NN-000''NN-0000',所以我不想在最後6個字符中選擇使用子字符串。 –

+1

在Oracle'regexp_substr(your_string,'\ S * $')' –

回答

1

結合RIGHT(),反向()和定位()的權力

SELECT RIGHT('ABC:123 UVW XYZ NN-000',LOCATE(' ',REVERSE('ABC:123 UVW XYZ NN-000'))-1) 

編輯:找到在MySQL中,沒有CHARINDEX

REVERSE()反轉字符串,使「第一'它發現的空間確實是最後一個。你可以使用SUBSTRING而不是RIGHT,但是如果你想要的是在字符串的末尾,那麼也可以使用RIGHT。

4

在Oracle中,使用SUBSTRINSTR功能

SELECT SUBSTR('ABC:123 UVW XYZ NN-000', INSTR('ABC:123 UVW XYZ NN-000', ' ', -1)) 
AS LASTOCCUR 
FROM DUAL 

結果:

| LASTOCCUR | 
------------- 
| NN-000 | 

參考LIVE DEMO

相關問題