2013-06-03 29 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

相关问题