SQL在字符串中查找字串出现第N次的位置

来源:互联网 发布:琅琊榜收视数据 编辑:程序博客网 时间:2024/05/21 08:47

标准SQL没有提供解决方案,各大厂商貌似也没有提供这样的函数,只能自力更生了,

以下代码使用postgresql 的 PL/SQL语法写成,其它环境只要替换个别函数即可:

CREATE OR REPLACE FUNCTION find_string_N_time(sourceStr VARCHAR, desStr VARCHAR, appearTime INT)RETURNS varchar as$BODY$DECLARE v_temp_source_str VARCHAR(1024); v_position INT := 0; v_pre_position INT := 0;BEGIN v_temp_source_str := sourceStr; FOR i in 1..appearTime  LOOP   SELECT POSITION(desStr IN v_temp_source_str) INTO v_pre_position;   SELECT SUBSTR(v_temp_source_str, v_position + 1) INTO v_temp_source_str;   v_position := v_position + v_pre_position;  END LOOP;  RETURN v_position;END;$BODY$LANGUAGE plpgsql VOLATILE

有什么更好的方法,告诉我请。

原创粉丝点击