oracle字串分割函數

來源:互聯網
上載者:User

CREATE OR REPLACE TYPE mytable AS TABLE OF varchar2(100)

CREATE OR REPLACE FUNCTION SPLIT(SRC VARCHAR2, DELIMITER VARCHAR2)
  RETURN MYTABLE IS
  PSRC VARCHAR2(500);
  A    MYTABLE := MYTABLE();
  I    NUMBER := 1; -- 
  J    NUMBER := 1;
BEGIN
  PSRC := RTRIM(LTRIM(SRC, DELIMITER), DELIMITER);
  LOOP
    I := INSTR(PSRC, DELIMITER, J);
    --Dbms_Output.put_line(i); 
    IF I > 0 THEN
      A.EXTEND;
      A(A.COUNT) := TRIM(SUBSTR(PSRC, J, I - J));
      J := I + 1;
      --Dbms_Output.put_line(a(a.Count-1)); 
    END IF;
    EXIT WHEN I = 0;
  END LOOP;
  IF J < LENGTH(PSRC) THEN
    A.EXTEND;
    A(A.COUNT) := TRIM(SUBSTR(PSRC, J, LENGTH(PSRC) + 1 - J));
  END IF;
  RETURN A;
END;

CREATE OR REPLACE FUNCTION SPLIT(SRC VARCHAR2, DELIMITER VARCHAR2) RETURN MYTABLE IS
PSRC VARCHAR2(500); A MYTABLE := MYTABLE(); I NUMBER := 1; --
J NUMBER := 1;
BEGIN
PSRC := RTRIM(LTRIM(SRC, DELIMITER), DELIMITER); LOOP I := INSTR(PSRC, DELIMITER, J);
--Dbms_Output.put_line(i);
IF I > 0 THEN A.EXTEND; A(A.COUNT) := TRIM(SUBSTR(PSRC, J, I - J)); J := I + 1;
--Dbms_Output.put_line(a(a.Count-1));
END IF; EXIT WHEN I = 0;
END LOOP; IF J < LENGTH(PSRC) THEN A.EXTEND; A(A.COUNT) := TRIM(SUBSTR(PSRC, J, LENGTH(PSRC) + 1 - J));
END IF; RETURN A;
END;
/

數組作為SELECT IN的查詢條件

SELECT * FROM STUDENT WHERE ID IN (SELECT * FROM TABLE(CAST(SPLIT('001,002', ',') AS
MYTABLE))); SELECT * FROM STUDENT WHERE ID IN (SELECT * FROM TABLE(CAST(SPLIT('001,002', ',') AS
MYTABLE)));

SELECT * FROM STUDENT WHERE ID IN (SELECT ID FROM STUDENT WHERE ID = '001' UNION SELECT * FROM TABLE(CAST(SPLIT('001,002', ',') AS
MYTABLE))

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.