通过写一个函数,
1.用INSTR()找出第一个','出现的位置
2.然后用SUBSTR()截取字符串(前面和后面),
重复此过程
SQL> SELECT INSTR('123,456,7,ASD',',') FROM DUAL;INSTR('123,456,7,ASD',',')
--------------------------
4
SQL> SELECT SUBSTR('123,456,7,ASD',0,4-1) FROM DUAL;SUB
---
123
1.用INSTR()找出第一个','出现的位置
2.然后用SUBSTR()截取字符串(前面和后面),
重复此过程
SQL> SELECT INSTR('123,456,7,ASD',',') FROM DUAL;INSTR('123,456,7,ASD',',')
--------------------------
4
SQL> SELECT SUBSTR('123,456,7,ASD',0,4-1) FROM DUAL;SUB
---
123
解决方案 »
- oracle数据库和数据仓库的关系
- 请教一个关于查询的的问题。
- oracle10g中使用utl_file.fopen遇到的问题,求教,很急!
- 处理主从小区问题两种sql写法的比较
- oracle高级复制中为什么是单向复制啊?
- 在远程怎样用sql/plus+ create database建立一个数据库呢?
- .net中Oracle数据库连接问题。新人请教。。。望指教
- 在oracle的sqlplus中怎样能把结果保存在c:\a.txt中
- Oracle 9i服务器端可以在win2000专业版装吗
- 用exp命令导出数据出错,删除dblink只后才可以,但是dblink必须要用
- exp导出数据后,为什么不能用imp直接导入呢?错误提示对象已存在
- 如何给union 的结果排序?
as
temp_v varchar2(100);
temp_c varchar2(100);
begin
temp_c := '123,456,7,9234';
for int_temp in 1..lengthb(temp_c) loop
if (substrb(temp_c,int_temp,1)=',') then
temp_v:=temp_v||' ';
else
temp_v:=temp_v||substrb(temp_c,int_temp,1);
end if;
end loop;
end test;
/
select replace('123,456,789',',',' ') from dual;
select gysh,
substr(gysh, 1, instr(gysh,',',1) -1 ),
substr(gysh,instr(gysh,',',1)+1,instr(gysh,',',1,2)-instr(gysh,',',1)-1),
substr(gysh,instr(gysh,',',1,2)+1,instr(gysh,',',1,3)-instr(gysh,',',1,2)-1),
substr(gysh,instr(gysh,',',1,3)+1)
from user;