PostgreSQL仿照Oracle的instr函数
来源:互联网 发布:不用网络的斗地主 编辑:程序博客网 时间:2024/06/06 00:25
转自:http://www.myexception.cn/operating-system/480929.html
PostgreSQL模仿Oracle的instr函数
---- instr functions that mimic Oracle's counterpart-- Syntax: instr(string1, string2, [n], [m]) where [] denotes optional parameters.---- Searches string1 beginning at the nth character for the mth occurrence-- of string2. If n is negative, search backwards. If m is not passed,-- assume 1 (search starts at first character).--CREATE FUNCTION instr(varchar, varchar) RETURNS integer AS $$DECLARE pos integer;BEGIN pos:= instr($1, $2, 1); RETURN pos;END;$$ LANGUAGE plpgsql STRICT IMMUTABLE;CREATE FUNCTION instr(string varchar, string_to_search varchar, beg_index integer)RETURNS integer AS $$DECLARE pos integer NOT NULL DEFAULT 0; temp_str varchar; beg integer; length integer; ss_length integer;BEGIN IF beg_index > 0 THEN temp_str := substring(string FROM beg_index); pos := position(string_to_search IN temp_str); IF pos = 0 THEN RETURN 0; ELSE RETURN pos + beg_index - 1; END IF; ELSE ss_length := char_length(string_to_search); length := char_length(string); beg := length + beg_index - ss_length + 2; WHILE beg > 0 LOOP temp_str := substring(string FROM beg FOR ss_length); pos := position(string_to_search IN temp_str); IF pos > 0 THEN RETURN beg; END IF; beg := beg - 1; END LOOP; RETURN 0; END IF;END;$$ LANGUAGE plpgsql STRICT IMMUTABLE;CREATE FUNCTION instr(string varchar, string_to_search varchar, beg_index integer, occur_index integer)RETURNS integer AS $$DECLARE pos integer NOT NULL DEFAULT 0; occur_number integer NOT NULL DEFAULT 0; temp_str varchar; beg integer; i integer; length integer; ss_length integer;BEGIN IF beg_index > 0 THEN beg := beg_index; temp_str := substring(string FROM beg_index); FOR i IN 1..occur_index LOOP pos := position(string_to_search IN temp_str); IF i = 1 THEN beg := beg + pos - 1; ELSE beg := beg + pos; END IF; temp_str := substring(string FROM beg + 1); END LOOP; IF pos = 0 THEN RETURN 0; ELSE RETURN beg; END IF; ELSE ss_length := char_length(string_to_search); length := char_length(string); beg := length + beg_index - ss_length + 2; WHILE beg > 0 LOOP temp_str := substring(string FROM beg FOR ss_length); pos := position(string_to_search IN temp_str); IF pos > 0 THEN occur_number := occur_number + 1; IF occur_number = occur_index THEN RETURN beg; END IF; END IF; beg := beg - 1; END LOOP; RETURN 0; END IF;END;$$ LANGUAGE plpgsql STRICT IMMUTABLE;
0 0
- PostgreSQL仿照Oracle的instr函数
- PostgreSQL模仿Oracle的instr函数
- Oracle的instr函数
- Oracle的instr函数
- Oracle的instr函数
- Oracle的instr函数
- Oracle的instr函数
- Oracle的instr函数
- oracle的instr函数用法
- Oracle的instr函数(转载)
- Oracle的instr函数使用
- oracle的instr函数用法
- oracle instr函数的用法
- Oracle的instr函数使用
- instr函数的使用-oracle
- ORACLE 的 instr ()函数
- Oracle的instr函数和substr函数
- Oracle中instr函数的用法
- Poj 3624
- jvm内存的划分
- 产品运营的13条核心思维
- 新建maven项目无WebContent目录
- 重温《JAVA编程思想》----2017.1.23+24 容器/集合
- PostgreSQL仿照Oracle的instr函数
- LeetCode 136. Single Number(Java)
- 安卓-封装实用的Toast工具类
- SPARK: Adapting Keyword Query to Semantic Search-ISWC2007
- 算法之路二:刘汝佳算法竞赛入门经典:STL排序与检索 大理石在哪 UVA10474
- sublime text3配置php编译环境
- 使用记事本编写Java程序
- PAT(甲级)1028. List Sorting (25)
- wifi密码查看