ABC:123 UVW XYZ NN-000
什麼是在使用substr()
後最後一個空格後得到數值的最佳方法?在這種情況下,我想獲得NN-000
,但是在大於或小於6個字符的情況下也能夠獲得最後一個值。最後一個索引的子串
ABC:123 UVW XYZ NN-000
什麼是在使用substr()
後最後一個空格後得到數值的最佳方法?在這種情況下,我想獲得NN-000
,但是在大於或小於6個字符的情況下也能夠獲得最後一個值。最後一個索引的子串
在MySQL中,你可以使用reverse
和substring_index
:
select data,
rv,
reverse(substring_index(rv, ' ', 1)) yd
from
(
select data,
reverse(data) rv
from yt
) d;
在Oracle中你可以使用reverse
,substr
和instr
:
select data,
reverse(substr(rv, 0, instr(rv, ' '))) rv
from
(
select data, reverse(data) rv
from yt
) d
結合RIGHT(),反向()和定位()的權力
SELECT RIGHT('ABC:123 UVW XYZ NN-000',LOCATE(' ',REVERSE('ABC:123 UVW XYZ NN-000'))-1)
編輯:找到在MySQL中,沒有CHARINDEX
REVERSE()反轉字符串,使「第一'它發現的空間確實是最後一個。你可以使用SUBSTRING而不是RIGHT,但是如果你想要的是在字符串的末尾,那麼也可以使用RIGHT。
在Oracle中,使用SUBSTR
和INSTR
功能
SELECT SUBSTR('ABC:123 UVW XYZ NN-000', INSTR('ABC:123 UVW XYZ NN-000', ' ', -1))
AS LASTOCCUR
FROM DUAL
結果:
| LASTOCCUR |
-------------
| NN-000 |
你是什麼「的意思,但也能獲得在**更大的情況下最後的價值** **或**少於**字符「 –
@pratik gard,最後一個空格後的字符串長度可以多於或少於6個字符。 'NN-00'' NN-000''NN-0000',所以我不想在最後6個字符中選擇使用子字符串。 –
在Oracle'regexp_substr(your_string,'\ S * $')' –