Convert comma separated string to array in PL/SQL

前端 未结 14 2250
没有蜡笔的小新
没有蜡笔的小新 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:56

    Using a pipelined table function:

    SQL> CREATE OR REPLACE TYPE test_type
      2  AS
      3    TABLE OF VARCHAR2(100)
      4  /
    
    Type created.
    
    SQL> CREATE OR REPLACE FUNCTION comma_to_table(
      2      p_list IN VARCHAR2)
      3    RETURN test_type PIPELINED
      4  AS
      5    l_string LONG := p_list || ',';
      6    l_comma_index PLS_INTEGER;
      7    l_index PLS_INTEGER := 1;
      8  BEGIN
      9    LOOP
     10      l_comma_index := INSTR(l_string, ',', l_index);
     11      EXIT
     12    WHEN l_comma_index = 0;
     13      PIPE ROW ( TRIM(SUBSTR(l_string, l_index, l_comma_index - l_index)));
     14      l_index := l_comma_index                                + 1;
     15    END LOOP;
     16  RETURN;
     17  END comma_to_table;
     18  /
    
    Function created.
    

    Let's see the output:

    SQL> SELECT *
      2  FROM TABLE(comma_to_table('12 3,456,,,,,abc,def'))
      3  /
    
    COLUMN_VALUE
    ------------------------------------------------------------------------------
    12 3
    456
    
    
    
    
    abc
    def
    
    8 rows selected.
    
    SQL>
    

提交回复
热议问题