-- 实现1

CREATE FUNCTION instr(varchar, varchar) RETURNS integer AS

$$ DECLARE pos integer;

BEGIN

pos := instr($1, $2, 1);

RETURN pos;

END;

$$ LANGUAGE plpgsql STRICT IMMUTABLE;

-- 实现2

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;

ELSIF beg_index < 0 THEN

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;

ELSE

RETURN 0;

END IF;

END;

$$ LANGUAGE plpgsql STRICT IMMUTABLE;

-- 实现3

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;

ELSIF beg_index < 0 THEN

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;

ELSE

RETURN 0;

END IF;

END;

$$ LANGUAGE plpgsql STRICT IMMUTABLE;

oracle数据库instr用法,postgresql instr函数功能实现(实现oracle plsql instr相同功能)相关推荐

  1. 深度解析:Oracle数据库SYSDATE到PostgreSQL数据库最佳转换

    本文讨论了在Amazon RDS和Aurora 中使用PostgreSQL数据库时,与日期/时间相关的函数,并确定PostgreSQL数据库里的clock_timestamp()函数与Oracle中的 ...

  2. oracle数据库imp用法,imp导入数据库的用法

    66.2. exp/imp 创建导入,导出用户 sqlplus /nolog conn system/manager GRANT CREATE USER,DROP USER,ALTER USER ,C ...

  3. 如何将oracle数据库中的表结构导入到sqlserver中,Oracle转换成SqlServer数据库的步骤...

    1 背景 ITM系统目前支持MysqL.Oracle数据库,由于现在需要和CA产品进行结合,用CA产品的采集功能进行数据采集,因此需要使用CA产品的sqlServer数据库,为了使得系统支持sqlse ...

  4. java连接数据库 oracle,Oracle数据库之一分钟教你学会用java连接Oracle数据库

    本文主要向大家介绍了Oracle数据库之一分钟教你学会用java连接Oracle数据库,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. package java_jdbc; // ...

  5. linux查询数据库oracle端口,Oracle数据库常用命令、Linux监听配置、oracle linux下开放1521端口...

    Oracle数据库常用命令.Linux监听配置.oracle linux下开放1521端口 时间:2020-02-14 来源: 一.Linux下Oracle数据库常用命令 oracle用户下执行: $ ...

  6. oracle10 数据库审计,Oracle数据库审计用法实例

    本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的.通过举例的方式来说明ORACLE审计的用法.ORACLE的审计可以从语句级.对象 本节是从Oracle METALINK ...

  7. oracle group by用法_从OceanBase TPCC测试报告看ORACLE兼容性进展

    概述 2019年10月2日,TPC委员会在官网(tcp.org)发布了 TPC-C榜单的最新测试报告:OceanBase数据库TPC-C测试披露报告.下载地址:http://www.tpc.org/r ...

  8. oracle数据库好用,怎么才能更好的使用Oracle数据库系统?

    1.having子句的使用方法 having子句对group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by子句中的列. 2.外部联接 " ...

  9. oracle数据库领域,菜鸟成长课程之《Oracle数据库职业直通车》,引领大家真正进入Oracle数据库领域...

    课程简介: 近年来,Oracle数据库无疑是全球数据库领域中的领航者, Oracle DBA的待遇节节攀升, 导致了许多人希望转入这个行业.而Oracle数据库又因它的庞大和复杂另很多人望而却步,找不 ...

  10. oracle数据库集群采用的是形式,铁道部采用Oracle集群数据库进行TMIS系统“三级建库”...

    综述 铁道部利用Oracle9i集群数据库系统(Oracle9i RAC),顺利开展铁道部运输管理信息系统(TMIS)的"三级建库"工程--在各铁路局和铁路分局利用Oracle9i ...

最新文章

  1. Http-tunnel突破单位网管封杀QQ、MSN端口的方法
  2. AI算法连载18:统计之EM 迭代算法
  3. 2019北京理工大学计算机专硕经验分享
  4. 自然语言处理——语言模型
  5. freemarker 如何获得list的索引值
  6. 远程桌面无法复制粘贴问题
  7. Minecraft在安卓手机上搭建java服务器
  8. VB获取一个文件夹中指定的文件或文件夹名称到列表
  9. 算力测试Linux,附录:计算力的标准Linpack测试详细指南(1)
  10. 第七十六篇 MIPI简单说明
  11. 关于ubuntu上,usb设备编号
  12. 围绕开源的系列思考之二——企业篇
  13. 线性代数 --- 什么叫线性组合 Linear Combination(个人笔记扫描版)
  14. Linux Update
  15. 学习HTML的第一天
  16. c语言数据结构课程设计电梯,数据结构课程设计报告(模拟电梯).doc
  17. 美团NLP以及知识图谱文章提炼
  18. 智能小区java_java毕业设计_springboot框架的模式下的智能小区规划系统
  19. iOS:机型参数、sdk、xcode各版本
  20. python wxpy模块,python wxpy模块 (一)简单上手

热门文章

  1. 解决vscode官网下载速度很慢
  2. 难以置信:字节AI-Lab这个领域面试居然没问AI知识
  3. 安卓学习UI组件-解决ScrollView嵌套ListView,GridView的冲突
  4. 新的CAD看图软件,查看图纸更方便
  5. 异步请求和同步请求的区别
  6. ajaxform的疑难杂症
  7. Tess4j linux 32,Tess4j文字识别库的相关研究
  8. 论文阅读Reconstructing CT from Biplanar X-Rays with Generative Adversarial Networks
  9. 支付宝直付通 VS 微信收付通分账产品异同
  10. 绩效考核六大认识误区解析(zt)