Mysql 来自上一个索引的子字符串
使用Mysql 来自上一个索引的子字符串,mysql,sql,oracle,substring,Mysql,Sql,Oracle,Substring,使用substr()获取最后一个空格后的值的最佳方法是什么?在这种情况下,我希望得到NN-000,但如果最后一个值大于或小于6个字符,我也能够得到它。将RIGHT()、REVERSE()和LOCATE()的幂合并起来 编辑:位于MYSQL中,而不是CHARINDEX中 REVERSE()反转字符串,使它找到的“第一个”空格实际上是最后一个。您可以使用SUBSTRING而不是RIGHT,但是如果您所追求的是字符串的末尾,那么最好使用RIGHT。在MySQL中,您可以使用and: 看 在Oracle
substr()
获取最后一个空格后的值的最佳方法是什么?在这种情况下,我希望得到NN-000
,但如果最后一个值大于或小于6个字符,我也能够得到它。将RIGHT()、REVERSE()和LOCATE()的幂合并起来
编辑:位于MYSQL中,而不是CHARINDEX中
REVERSE()反转字符串,使它找到的“第一个”空格实际上是最后一个。您可以使用SUBSTRING而不是RIGHT,但是如果您所追求的是字符串的末尾,那么最好使用RIGHT。在MySQL中,您可以使用and:
看
在Oracle中,您可以使用,并且:
请参见Oracle中的,使用
SUBSTR
和INSTR
函数
select data,
reverse(substr(rv, 0, instr(rv, ' '))) rv
from
(
select data, reverse(data) rv
from yt
) d
结果:
请参阅您所说的“但也能够获得最后一个值,如果该值大于或小于6个字符”是什么意思@pratik gard,最后一个空格后的字符串长度可以大于或小于6个字符
NN-00
NN-000
NN-0000
因此我不想选择对最后6个字符使用子字符串。在Oracleregexp\u substr(您的字符串'\S*$')
SELECT SUBSTR('ABC:123 UVW XYZ NN-000', INSTR('ABC:123 UVW XYZ NN-000', ' ', -1))
AS LASTOCCUR
FROM DUAL
select data,
rv,
reverse(substring_index(rv, ' ', 1)) yd
from
(
select data,
reverse(data) rv
from yt
) d;
select data,
reverse(substr(rv, 0, instr(rv, ' '))) rv
from
(
select data, reverse(data) rv
from yt
) d
SELECT SUBSTR('ABC:123 UVW XYZ NN-000', INSTR('ABC:123 UVW XYZ NN-000', ' ', -1))
AS LASTOCCUR
FROM DUAL
| LASTOCCUR |
-------------
| NN-000 |