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 * $')' –