Oracle 分割字串函數

來源:互聯網
上載者:User

 

http://lwl0606.cmszs.com/archives/oracle-split-string-function.html

CREATE OR REPLACE TYPE Varchar2Varray IS VARRAY(100) of VARCHAR2(40);
/

CREATE OR REPLACE FUNCTION sf_split_string (string VARCHAR2, substring VARCHAR2) RETURN Varchar2Varray IS
  len integer := LENGTH(substring);
  lastpos integer := 1 - len;
  pos integer;
  num integer;
  i integer := 1;
  ret Varchar2Varray := Varchar2Varray(NULL);
BEGIN
  LOOP
    pos := instr(string, substring, lastpos + len);
    IF pos > 0 THEN        --found
      num := pos - (lastpos + len);
    ELSE                --not found
      num := LENGTH(string) + 1 - (lastpos + len);
    END IF;

    IF i > ret.LAST THEN
      ret.EXTEND;
    END IF;

    ret(i) := SUBSTR(string, lastpos + len, num);

    EXIT WHEN pos = 0;
    lastpos := pos;
    i := i + 1;
  END LOOP;

  RETURN ret;
END;
/

SQL> select * from table (cast (
  2    sf_split_string('ABC,DEFGH,IJKLMN,OPQRST', ',') as Varchar2Varray) );

COLUMN_VALUE
----------------------------------------
ABC
DEFGH
IJKLMN
OPQRST

SQL> select * from table (cast (
  2    sf_split_string('ABC//DEFGH/IJKLMN//OPQRST', '//') as Varchar2Varray) );

COLUMN_VALUE
----------------------------------------
ABC
DEFGH/IJKLMN
OPQRST

http://lwl0606.cmszs.com/archives/oracle-split-string-function.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.