Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 来自上一个索引的子字符串_Mysql_Sql_Oracle_Substring - Fatal编程技术网

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个字符使用子字符串。在Oracle
regexp\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 |