为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:cenos
【CPU】:
【问题描述】*:查询了技术文档,没有发现达梦数据库可以返回一个table类型的
CREATE TYPE split_data_row AS OBJECT (split_data VARCHAR2(4000));
CREATE TYPE split_data_table AS TABLE OF split_data_row;
CREATE OR REPLACE FUNCTION regexp_split_to_table (p_string VARCHAR2, p_pattern VARCHAR2)
RETURN split_data_table
IS
v_result split_data_table := split_data_table();
BEGIN
FOR i IN 1..REGEXP_COUNT(p_string, p_pattern) + 1 LOOP
v_result.EXTEND;
v_result(i) := split_data_row(REGEXP_SUBSTR(p_string, '[^'||p_pattern||']+', 1, i));
END LOOP;
RETURN v_result;
END regexp_split_to_table;
select * from table(regexp_split_to_table('John,Doe,Jane,Smith', ','));
可以尝试用connect by来做,如:
select regexp_substr('apple,banana,orange','[^,]+', 1, level) as part_str
connect by regexp_substr('apple,banana,orange','[^,]+', 1, level)
可以参照ORACLE改写方式,添加相关自定义函数,如:
oracle将逗号分割的字符串转换成table类型