oracle 如何截取两个"-"之间的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 如何截取两个"-"之间的字符串相关的知识,希望对你有一定的参考价值。

奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰

比如这样的一串字符,我如何截取出"西拉红"这3个字

可以使用substr函数及instr函数共同实现:

如,字符串为:123-asdf-119

现在要截取两个“-”中间的字符串,可用如下语句:

select substr(\'123-asdf-119\',instr(\'123-asdf-119\',\'-\')+1,instr(\'123-asdf-119\',\'-\',instr(\'123-asdf-119\',\'-\')+1)-instr(\'123-asdf-119\',\'-\')-1) from dual;

查询结果:


instr函数:

语法如下: 

instr( string1, string2, start_position,nth_appearance )

substr函数:

substr(string,start,length)

string - 指定的要截取的字符串

start - 必需,规定在字符串的何处开始

正数 - 在字符串的指定位置开始

负数 - 在从字符串结尾的指定位置开始

0 - 在字符串中的第一个字符处开始

length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。

参考技术A SELECT REGEXP_SUBSTR('奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰', '[^-]+', 1, LEVEL, 'i') AS STR
FROM DUAL
CONNECT BY LEVEL <=
LENGTH('奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰') - LENGTH(REGEXP_REPLACE('奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰', '-', ''))+1;本回答被提问者和网友采纳

以上是关于oracle 如何截取两个"-"之间的字符串的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何截取两个"-"之间的字符串,如果是正则表达式该如何用啊?

PHP中如何截取两个指定字符中间的字符?急!

javascript 如何截取两个指定下标之间的字符串

java 截取一空格为分隔符的字符串

如何截取并替换字符串中相同部分

javascript 如何截取两个指定下标之间的字符串