ABC:123 UVW XYZ NN-000
使用substr()
获取最后一个空格后的值的最佳方法是什么?在这种情况下,我希望获得NN-000
,但也可以在大于或小于6个字符的情况下获得最后一个值。
答案 0 :(得分:4)
在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 |
参考 LIVE DEMO
答案 1 :(得分:2)
在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
答案 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。