ABC:123 UVW XYZ NN-000
使用最后一个空格后获取值的最佳方法是什么substr()
?在这种情况下,我想获得NN-000
但也能够在大于或小于 6 个字符的情况下获得最后一个值。
在 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 |
参考现场演示
在 MySQL 中,您可以使用reverse
and 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()、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。