相关疑难解决方法(0)

通过Oracle SQL查询拆分行中列的逗号分隔值

我有一张如下表:

-------------
ID   | NAME
-------------
1001 | A,B,C
1002 | D,E,F
1003 | C,E,G
-------------
Run Code Online (Sandbox Code Playgroud)

我希望这些值显示为:

-------------
ID   | NAME
-------------
1001 | A
1001 | B
1001 | C
1002 | D
1002 | E
1002 | F
1003 | C
1003 | E
1003 | G
-------------
Run Code Online (Sandbox Code Playgroud)

我试过做:

select split('A,B,C,D,E,F', ',') from dual; -- WILL RETURN COLLECTION

select column_value
from table (select split('A,B,C,D,E,F', ',') from dual); -- RETURN COLUMN_VALUE
Run Code Online (Sandbox Code Playgroud)

sql oracle split comma

8
推荐指数
2
解决办法
6万
查看次数

从Oracle函数返回表

我已经在这里看了很多解决方案,试图解决这个问题,他们已经走得很远,但现在我正处于一些错误的杂草中,我似乎无法过去.

我在Oracle 11g上.我需要一个函数来返回一个记录集(表).这是我正在使用的代码:

CREATE TYPE T_TABLE IS OBJECT
(
    Field1 int
    , Field2 int
);

CREATE TYPE T_TABLE_COLL IS TABLE OF T_TABLE;

CREATE OR REPLACE FUNCTION FN_MyFunction
RETURN T_TABLE_COLL 
IS
BEGIN
  FOR I IN (SELECT Field1, Field2 FROM Table1) LOOP
    IF I.Field1 = 1 THEN
        BEGIN           
            INSERT INTO T_TABLE     
            SELECT Field1, Field2
            FROM Table2
            WHERE Field2 = I.Field2;
        END;
    ELSIF I.Field1 = 2 THEN
        BEGIN           
            INSERT INTO T_TABLE     
            SELECT Field1, Field2
            FROM Table2
            WHERE Field2 = I.Field2;
        END;  
  END IF; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql function oracle11g

3
推荐指数
1
解决办法
3万
查看次数

标签 统计

oracle ×2

comma ×1

function ×1

oracle11g ×1

plsql ×1

split ×1

sql ×1