oracle中 sql截取某个字符前面和后面的值

2-15

2-33
2-3
12-8
12-22
12-3
我想在Oracle数据库中使用sql截取-前面的值以及-后面的值,求语句写法,谢谢!

1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。

2、先挑ID为1的数据进行截取查询演示。

3、如果已知截取字符的长度和特殊字符位置,就可以用substring()函数来从字符串的开始位置,截取到特殊字符出现的位置。

4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句。

5、使用LEFT()函数和charindex()函数来从字符最左边开始到特殊字符出现的位置。

6、第一个参数表示被截取的字符串,第二个参数表示要在第一个参数中开始截取的位置,第三个参数表示要截取的长度。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-14

创建测试表及数据

create table test
(name varchar2(10));

insert into test values ('2-15');
insert into test values ('2-33');
insert into test values ('2-3');
insert into test values ('12-8');
insert into test values ('12-22');
insert into test values ('12-3');

 执行

select name,substr(name,1,instr(name,'-')-1) 前,substr(name,instr(name,'-')+1,length(name)-instr(name,'-')) 后 from test

截图

本回答被提问者采纳
第2个回答  2015-03-20
截取前面:substr(列名,0,INSTR(列名,'-',1,1))

截取后面:substr(列名,INSTR(列名,'-',1,1))
第3个回答  2015-03-20
SELECT SUBSTRING('12-22',0,CHARINDEX('-','12-22',0)),SUBSTRING('12-22',CHARINDEX('-','12-22',0)+1,LEN('12-22')-CHARINDEX('-','12-22',0))

把那个‘12-22'改成你的字段名