table :
--------------------
    字段1
--------------------
      1
      差
      1
      好
     不好
      4
     良好
      4   
      差要的结果:
--------------------------------
  字段1   |     字段2
--------------------------------
 ‘ ’    |       1   
   差     |     ‘ ’
 ‘ ’    |       1
   好     |     ‘ ’  
  不好    |     ‘ ’  
  ‘ ’   |       4
  良好    |     ‘ ’   
  ‘ ’   |       4
   差     |     ‘ ’   
说明:
      就是吧表中的一个字段数据分开来,字符的分在一个字段里,数字分在另一个字段里。
                                                                                    求高手指点!~

解决方案 »

  1.   

    先创建一个表temp_table ,带2个字段:字段1, 字段2
    然后执行SQL块:
    declare
     vs_digit  varchar2(100);
     vs_string varchar2(100);
    begin
     insert into temp_table select 源表.字段1, '' as NULLCOL from 源表
         where regexp_like(源表.字段1, '\d');
     insert into temp_table select '' as NULLCOL , 源表.字段1 from 源表
         where regexp_like(源表.字段1, '\D');
     commit;
    end;
      

  2.   

    regexp_like 后面的'\d'和'\D'分别表示什么呢?  这个我貌似不太懂。
      

  3.   

    INSERT INTO TABL2
    SELECT REGEXP_REPLACE(字段1,'^[0-9]+$',''),
           REGEXP_REPLACE(字段1,'^[^0-9]+$''')
    FROM TABL1;
      

  4.   

    4楼的答案有BUG,更正一下。INSERT INTO TABL2
    SELECT REGEXP_REPLACE(字段1,'^[0-9]+$',''),
           REGEXP_REPLACE(字段1,'^.*[^0-9]+.*$',''),
           字段1
    FROM TABL1;
      

  5.   

    汗,再次更正。INSERT INTO TABL2
    SELECT REGEXP_REPLACE(字段1,'^[0-9]+$',''),
           REGEXP_REPLACE(字段1,'^.*[^0-9]+.*$',''
    FROM TABL1;
      

  6.   


    -- 数据
    CREATE TABLE T61
    (
        f1 VARCHAR2(20)
    );INSERT INTO T61 VALUES('1');
    INSERT INTO T61 VALUES('差');
    INSERT INTO T61 VALUES('1');
    INSERT INTO T61 VALUES('好');
    INSERT INTO T61 VALUES('不好');
    INSERT INTO T61 VALUES('4');
    INSERT INTO T61 VALUES('良好');
    INSERT INTO T61 VALUES('4');
    INSERT INTO T61 VALUES('差');CREATE TABLE T62 
    (
        f1 VARCHAR2(20),
        f2 NUMBER(4)
    );