pgsql的语句:select unnest (string_to_array('weq,eweq,ewqe,d', ',')) from dual .对应的达梦中的存储函数该如何写
看下这样符合要求不?
CREATE OR REPLACE TYPE simple_string AS OBJECT (
value VARCHAR2(100) -- 字符串类型
);
CREATE OR REPLACE TYPE string_table IS TABLE OF simple_string;
CREATE OR REPLACE FUNCTION unnest(
p_unnest VARCHAR2,
p_delimiter VARCHAR2
) RETURN string_table
AS
result string_table := string_table(); -- 初始化结果
BEGIN
FOR r IN (
SELECT REGEXP_SUBSTR(p_unnest, '[^'||p_delimiter||']+', 1, LEVEL) AS value
FROM DUAL
CONNECT BY REGEXP_SUBSTR(p_unnest, '[^'||p_delimiter||']+', 1, LEVEL) IS NOT NULL
) LOOP
result.EXTEND(); -- 扩展数组
result(result.COUNT) := simple_string(r.value); -- 添加新值
END LOOP;
RETURN result; -- 返回结果
END unnest;
/
SELECT * FROM TABLE(unnest('weq,eweq,ewqe,d', ','));
直接sql查询也是可以的
SELECT REGEXP_SUBSTR('weq,eweq,ewqe,d', '[^,]+', 1, LEVEL) AS value
FROM DUAL
CONNECT BY REGEXP_SUBSTR('weq,eweq,ewqe,d', '[^,]+', 1, LEVEL) IS NOT NULL;
问题验证中,请耐心等待。