您的位置:首页 > 数据库

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

2012-07-10 17:31 417 查看
标准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


有什么更好的方法,告诉我请。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: