达梦 自定义字符串分割函数取第几个

CREATE OR REPLACE FUNCTION split_string(p_string VARCHAR2, p_delimiter VARCHAR2, p_partIndex INT) RETURN VARCHAR2 IS
    v_start INT := 1;
    v_end INT := INSTR(p_string, p_delimiter, v_start);
    v_count INT := 1;
    v_result VARCHAR2(4000); -- 根据需要调整长度
BEGIN
    LOOP
        EXIT WHEN v_count = p_partIndex OR v_end = 0; -- 如果已经是最后一个元素或者没有找到分隔符,退出循环
        v_start := v_end + LENGTH(p_delimiter); -- 移动到下一个分隔符的后面一个字符的位置
        v_end := INSTR(p_string, p_delimiter, v_start); -- 查找下一个分隔符的位置
        v_count := v_count + 1; -- 增加计数器
    END LOOP;
    IF v_count = p_partIndex THEN -- 如果找到了正确的部分,则提取子字符串
        v_result := SUBSTR(p_string, v_start, CASE WHEN v_end = 0 THEN LENGTH(p_string) - v_start + 1 ELSE v_end - v_start END);
    END IF;
    RETURN v_result;
END;
/

 

posted @ 2026-01-28 09:52  都是城市惹的祸  阅读(2)  评论(0)    收藏  举报