我为此查询使用了子字符串
to_number(substr(skidno,instr(skidno,'/')+1,length(skidno)))
这个我将通过查询Skid no'MMM-1718/000325/1'我的号码无效
答案 0 :(得分:1)
如果您需要在第二次出现之后提取部件" /&#34 ;;以下查询将满足您的需求---
select to_number(trim('/' FROM
substr('MMM-1718/000325 / 1',
instr('MMM-1718/000325 / 1', '/', 1, 2))))
from dual;
答案 1 :(得分:1)
您可能想要使用regexp_substr
。如果您只想获取值末尾的数字:
to_number(regexp_substr(skidno, '\d+$'))
答案 2 :(得分:0)
你无法将其转换为数字,因为你会得到" /"在结果中。 结果:' 000325/1'。
如果您只需要' /'之间的数字。然后尝试下面:
to_number(substr(skidno ,instr(skidno ,'/')+1,
instr(skidno ,'/',1,2) -instr(skidno ,'/',1,1)-1 ))
答案 3 :(得分:0)
因为你需要在第二次出现'/'字符后开始的字符串的一部分并且到字符串的末尾,所以使用substr / instr可能是最简单的解决方案:
with t as
(
select 'MMM-1718/000325 / 1' mystring
from dual
)
select to_number(substr(mystring, instr(mystring, '/', 1, 2) + 1))
from t;
注意:在这种情况下,你只需要在substr函数中定义起始位置;不需要字符串的长度。