15:45:11 SQL> select substr('2:1:3',instr('2:1:3',':',2)+1,
15:45:14   2  instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;S
-
1已用时间:  00: 00: 00.15
15:45:19 SQL> select substr('2:1:3',1,instr('2:1:3',':')-1) from dual;S
-
2已用时间:  00: 00: 00.15
15:45:36 SQL> select substr('2:1:3',instr('2:1:3',':',2)+1,
15:45:38   2  instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;S
-
1已用时间:  00: 00: 00.16
15:45:56 SQL> select substr('2:1:3',instr('2:1:3',':',3)+1) from dual;S
-
3已用时间:  00: 00: 00.16
15:46:02 SQL>

解决方案 »

  1.   

    15:54:48 SQL> select * from t1;A
    ----------
    10:5
    10:50
    1:50
    1:5已用时间:  00: 00: 00.15
    15:54:52 SQL> select substr(a,1,instr(a,':')-1) a,substr(a,instr(a,':')+1,length
    (a)) b from t1;A          B
    ---------- ----------
    10         5
    10         50
    1          50
    1          5已用时间:  00: 00: 00.15
      

  2.   

    15:52:55 SQL> declare
    15:52:58   2  v_str varchar2(50):='1:2:3:4:5';
    15:52:58   3  v_num number;
    15:52:58   4  v_temp varchar2(10);
    15:52:58   5  begin
    15:52:58   6  for i in 1..length(v_str)-length(replace(translate(v_str,':',' '),' ','')) loop
    15:52:58   7      v_temp:=substr(v_str,1,instr(v_str,':')-1);
    15:52:58   8      v_str:=substr(v_str,instr(v_str,':')+1);
    15:52:58   9      dbms_output.put_line(v_temp);
    15:52:58  10  end loop;
    15:52:58  11  dbms_output.put_line(v_str);
    15:52:59  12  end;
    15:53:00  13  /
    1
    2
    3
    4
    5PL/SQL 过程已成功完成。已用时间:  00: 00: 00.47
    15:53:00 SQL>
      

  3.   

    先用instr找到:的位置,然后再利用substr()和length()截取
      

  4.   

    长度不是问题
    15:53:00 SQL> declare
    15:55:16   2  v_str varchar2(50):='1:341:3534:sefef:jtyj';
    15:55:32   3  v_num number;
    15:55:35   4  v_temp varchar2(10);
    15:55:35   5  begin
    15:55:35   6  for i in 1..length(v_str)-length(replace(translate(v_str,':',' '),' ','')) loop
    15:55:35   7      v_temp:=substr(v_str,1,instr(v_str,':')-1);
    15:55:35   8      v_str:=substr(v_str,instr(v_str,':')+1);
    15:55:35   9      dbms_output.put_line(v_temp);
    15:55:35  10  end loop;
    15:55:35  11  dbms_output.put_line(v_str);
    15:55:35  12  end;
    15:55:35  13  /
    1
    341
    3534
    sefef
    jtyjPL/SQL 过程已成功完成。已用时间:  00: 00: 00.31
    15:55:35 SQL> 不知道你的用途