或者不截取为N段字符串,直接在将要分段的地方插入个字符“NL”也可以~~

解决方案 »

  1.   

    -- 因为不支持中文,所以只好用NAME代替。 TRY IT ..
    SQL> SELECT SUBSTR(STR || 'NAME',
      2                INSTR(STR || 'NAME', 'NAME', 1, RN),
      3                INSTR(STR || 'NAME', 'NAME', 1, RN + 1) -
      4                INSTR(STR || 'NAME', 'NAME', 1, RN)) NEW_STR
      5    FROM TABLE_NAME SS,
      6         (SELECT ROWNUM RN
      7            FROM ALL_OBJECTS
      8           WHERE ROWNUM <=
      9                 (SELECT (LENGTHB(STR) - LENGTHB(REPLACE(STR, 'NAME', ''))) /
     10                         LENGTHB('NAME')
     11                    FROM TABLE_NAME)) AO
     12   WHERE INSTR(STR || 'NAME', 'NAME', 1, RN) > 0;NEW_STR
    --------------------------------------------------------------------------------
    NAME:ZHANGSHA/MAIL:[email protected]/MOBILE:13500000000/TELEPHONE:01012345678
    NAME:LISHI/MAIL:[email protected]/MOBILE:13500000001/TELEPHONE:02012345678
    NAME:ZHANGSHA/MAIL:[email protected]/MOBILE:13500000000/TELEPHONE:01012345678
    NAME:LISHI/MAIL:[email protected]/MOBILE:13500000001/TELEPHONE:02012345678
    NAME:ZHANGSHA/MAIL:[email protected]/MOBILE:13500000000/TELEPHONE:01012345678
    NAME:LISHI/MAIL:[email protected]/MOBILE:13500000001/TELEPHONE:020123456786 rows selected
      

  2.   

    存贮过程你自已可以学着编,不过这里要提示楼主一下:使用ASCII,lenth,lenthb,substr函数,
    先了解一下,如:SELECT ASCII(';') FROM dual;
    select lenth('abcdefg') from dual;
    select lenth('abc中国') from dual;
    select lenthb('abc中国') from dual;
    select substr('abcde中国',3,2);