Convert comma separated string to array in PL/SQL

前端 未结 14 2317
没有蜡笔的小新
没有蜡笔的小新 2020-11-27 03:19

How do I convert a comma separated string to a array?

I have the input \'1,2,3\' , and I need to convert it into an array.

14条回答
  •  天命终不由人
    2020-11-27 03:55

    I know Stack Overflow frowns on pasting URLs without explanations, but this particular page has a few really good options:

    http://www.oratechinfo.co.uk/delimited_lists_to_collections.html

    I particularly like this one, which converts the delimited list into a temporary table you can run queries against:

    /* Create the output TYPE, here using a VARCHAR2(100) nested table type */
    
    SQL> CREATE TYPE test_type AS TABLE OF VARCHAR2(100);
      2  /
    
    Type created.
    
    /* Now, create the function.*/
    
    SQL> CREATE OR REPLACE FUNCTION f_convert(p_list IN VARCHAR2)
      2    RETURN test_type
      3  AS
      4    l_string       VARCHAR2(32767) := p_list || ',';
      5    l_comma_index  PLS_INTEGER;
      6    l_index        PLS_INTEGER := 1;
      7    l_tab          test_type := test_type();
      8  BEGIN
      9    LOOP
     10      l_comma_index := INSTR(l_string, ',', l_index);
     11      EXIT WHEN l_comma_index = 0;
     12      l_tab.EXTEND;
     13      l_tab(l_tab.COUNT) := SUBSTR(l_string, l_index, l_comma_index - l_index);
     14      l_index := l_comma_index + 1;
     15    END LOOP;
     16    RETURN l_tab;
     17  END f_convert;
     18  /
    
    Function created.
    

    /* Prove it works */
    
    SQL> SELECT * FROM TABLE(f_convert('AAA,BBB,CCC,D'));
    
    COLUMN_VALUE
    --------------------------------------------------------------------------------
    AAA
    BBB
    CCC
    D
    
    4 rows selected.
    

提交回复
热议问题