SELECT ( SELECT wm_concat(u.user_name) from table(strsplit(wcc.participants_user_id)) t INNER JOIN qx.leap_user u ON u.uuid=t.COLUMN_VALUE) user_name, wcc.* FROM WORK_CLIENT_CONTENT wcc
一、创建数组类型
CREATE OR REPLACE TYPE strsplit_type IS TABLE OF VARCHAR2(512)
二、创建字符串分割函数
create or replace function strsplit(p_value varchar2,
p_split varchar2 := ',')
return strsplit_type
pipelined is
v_idx integer;
v_str varchar2(500);
v_strs_last varchar2(4000) := p_value;
begin
loop
v_idx := instr(v_strs_last, p_split);
exit when v_idx = 0;
v_str := substr(v_strs_last, 1, v_idx - 1);
v_strs_last := substr(v_strs_last, v_idx + 1);
pipe row(v_str);
end loop;
pipe row(v_strs_last);
return;
end strsplit;
三、调用
--usage: select * from table(strsplit('1,2,3,4,5'))
DECLARE
V_ARRAY T_RET_TABLE;
BEGIN
V_ARRAY := F_SPLIT_STRING('1,2,3,4,5,6',',');
FOR I IN 1..V_ARRAY.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(V_ARRAY(i));
END LOOP;
END;