达梦 自定义字符串分割函数取第几个
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; /
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号