入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-04-20 投稿人: 浏览次数:985

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

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

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;

12068


可以使用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 - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。


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;

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像