来自最后一个索引的子串

时间:2013-06-03 18:46:17

标签: mysql sql oracle substring

ABC:123 UVW XYZ NN-000

使用substr()获取最后一个空格后的值的最佳方法是什么?在这种情况下,我希望获得NN-000,但也可以在大于或小于6个字符的情况下获得最后一个值。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

在MySQL中,您可以使用reversesubstring_index

select data, 
  rv, 
  reverse(substring_index(rv, ' ', 1)) yd
from
(
  select data,
    reverse(data) rv
  from yt
) d;

请参阅SQL Fiddle with Demo

在Oracle中,您可以使用reversesubstrinstr

select data, 
  reverse(substr(rv, 0, instr(rv, ' '))) rv
from
(
  select data, reverse(data) rv
  from yt
) d

请参阅SQL Fiddle with Demo

答案 2 :(得分:1)

结合RIGHT(),REVERSE()和LOCATE()

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

编辑:在MYSQL中找到,而不是CHARINDEX

REVERSE()反转字符串,这样它找到的“第一个”空间就是最后一个空格。您可以使用SUBSTRING而不是RIGHT,但如果你所追求的是在字符串的末尾,那么也可以使用RIGHT。