PostgreSQL仿照Oracle的instr函数
转自: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 $$
DECLAREpos integer;
BEGINpos:= 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 $$
DECLAREpos integer NOT NULL DEFAULT 0;temp_str varchar;beg integer;length integer;ss_length integer;
BEGINIF beg_index > 0 THENtemp_str := substring(string FROM beg_index);pos := position(string_to_search IN temp_str);IF pos = 0 THENRETURN 0;ELSERETURN pos + beg_index - 1;END IF;ELSEss_length := char_length(string_to_search);length := char_length(string);beg := length + beg_index - ss_length + 2;WHILE beg > 0 LOOPtemp_str := substring(string FROM beg FOR ss_length);pos := position(string_to_search IN temp_str);IF pos > 0 THENRETURN 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 $$
DECLAREpos integer NOT NULL DEFAULT 0;occur_number integer NOT NULL DEFAULT 0;temp_str varchar;beg integer;i integer;length integer;ss_length integer;
BEGINIF beg_index > 0 THENbeg := beg_index;temp_str := substring(string FROM beg_index);FOR i IN 1..occur_index LOOPpos := position(string_to_search IN temp_str);IF i = 1 THENbeg := beg + pos - 1;ELSEbeg := beg + pos;END IF;temp_str := substring(string FROM beg + 1);END LOOP;IF pos = 0 THENRETURN 0;ELSERETURN beg;END IF;ELSEss_length := char_length(string_to_search);length := char_length(string);beg := length + beg_index - ss_length + 2;WHILE beg > 0 LOOPtemp_str := substring(string FROM beg FOR ss_length);pos := position(string_to_search IN temp_str);IF pos > 0 THENoccur_number := occur_number + 1;IF occur_number = occur_index THENRETURN beg;END IF;END IF;beg := beg - 1;END LOOP;RETURN 0;END IF;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
PostgreSQL仿照Oracle的instr函数相关推荐
- php instr函数,oracle的instr函数用法
这几天在做一个项目的时候,做到关于用户组权限分配的问题,用到了Oracle的instr函数,现在好好学习下这个函数吧. 在Oracle/PLSQL中, instr 函数返回要截取的字符串在源字符串中的 ...
- oracle调用MySQL函数,Oracle的INSTR函数MySQL实现
Oracle的INSTR函数MySQL实现 一个迁移项目遇到的,MySQL的instr函数只能查找子串是否在父串中,没法按照出现的次数进行查找.这里我自己写了一个,以便迁移.当然我这里仅仅针对的是迁移 ...
- java中instr函数,Oracle中instr函数使用方法
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始到字符的结尾就结束. 语 ...
- Oracle的instr函数使用
INSTR instr(源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符 ...
- oracle的instr函数
instr函数查找个字符串在另一个字符串中首次出现的位置.instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置. 一.语法 instr(string1, string2, ...
- oracle中的的instr,Oracle中instr函数使用方法
举例: scenarioinfo 中有60条数据,其中字段ywwd不为空的有40条(其中包含"积分"的有30条),字段ywwd为空的有20条. 查询scenarioinfo 表中字 ...
- oracle中的to_number,Oracle中to_number()函数的用法
to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...
- 提高sql查询性能-使用instr函数替换like
使用like查询时比较慢,使用oracle的instr函数可以提高查询的效率. 使用like: select f1.htbh as "htbh",f2.syqr as " ...
- java中instr函数_Oracle中instr函数使用方法
Oracle中instr函数使用方法 更新时间:2012年11月03日 00:53:51 作者: 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是 ...
最新文章
- dmol3给定关键字不在字典中_python中的数据结构与算法(2):字典与集合
- jq处理 php数组,jQuery数组处理方法汇总_jquery
- 树状数组 区间update/query
- [游戏模版18] Win32 五子棋
- Kubernetes中分布式存储Rook-Ceph部署快速演练
- Jax-RS自定义异常处理
- 点击事件为什么会失效_Spring事务原理?事务在方法间如何传播?为什么会失效?...
- win7键盘失灵 登陆界面键盘失效无法输入密码的解决办法
- should, could, would, will, be going to, may, might到底有甚麼不同,又該怎麼用?
- 【Python - OpenCV】数字图像项目实战(四) - 位姿估计
- c++ - 虚函数表
- 用计算机怎么弹星辰大海,【计算机学院】你们的征途将是星辰大海~
- 华为防火墙IPSEC简单搭建
- 【清华大学陈渝】 第十一章_死锁
- 带轮轮毂长度l和带轮宽b表_V带轮宽度怎么计算?知道是A型带,带数为6,轮缘宽、轮彀孔径与长度怎么计算?顺求公式...
- 论文阅读利器——划词翻译插件(桌面与浏览器)
- Siemens Simcenter FloEFD 2021.2.0 for Catia V5
- 70个必备的数据分析工具
- Spotify网络钓鱼活动目标锁定音乐爱好者
- “35岁危机”不再,算法岗应届生平均月薪超3.2万,人工智能行业掀抢人大战!...