oracle 如何截取两个"-"之间的字符串
奥迪-A5-CoupeQu-2.0T-7档自动-两门四驱-西拉红-深内饰比如这样的一串字符,我如何截取出"西拉红"这3个字...
奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰
比如这样的一串字符,我如何截取出"西拉红"这3个字 展开
比如这样的一串字符,我如何截取出"西拉红"这3个字 展开
2个回答
展开全部
可以使用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;
FROM DUAL
CONNECT BY LEVEL <=
LENGTH('奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰') - LENGTH(REGEXP_REPLACE('奥迪-A5-Coupe Qu-2.0T-7档自动-两门四驱-西拉红-深内饰', '-', ''))+1;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询