oracle数据库instr用法,postgresql instr函数功能实现(实现oracle plsql instr相同功能)
-- 实现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相同功能)相关推荐
- 深度解析:Oracle数据库SYSDATE到PostgreSQL数据库最佳转换
本文讨论了在Amazon RDS和Aurora 中使用PostgreSQL数据库时,与日期/时间相关的函数,并确定PostgreSQL数据库里的clock_timestamp()函数与Oracle中的 ...
- oracle数据库imp用法,imp导入数据库的用法
66.2. exp/imp 创建导入,导出用户 sqlplus /nolog conn system/manager GRANT CREATE USER,DROP USER,ALTER USER ,C ...
- 如何将oracle数据库中的表结构导入到sqlserver中,Oracle转换成SqlServer数据库的步骤...
1 背景 ITM系统目前支持MysqL.Oracle数据库,由于现在需要和CA产品进行结合,用CA产品的采集功能进行数据采集,因此需要使用CA产品的sqlServer数据库,为了使得系统支持sqlse ...
- java连接数据库 oracle,Oracle数据库之一分钟教你学会用java连接Oracle数据库
本文主要向大家介绍了Oracle数据库之一分钟教你学会用java连接Oracle数据库,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. package java_jdbc; // ...
- linux查询数据库oracle端口,Oracle数据库常用命令、Linux监听配置、oracle linux下开放1521端口...
Oracle数据库常用命令.Linux监听配置.oracle linux下开放1521端口 时间:2020-02-14 来源: 一.Linux下Oracle数据库常用命令 oracle用户下执行: $ ...
- oracle10 数据库审计,Oracle数据库审计用法实例
本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的.通过举例的方式来说明ORACLE审计的用法.ORACLE的审计可以从语句级.对象 本节是从Oracle METALINK ...
- oracle group by用法_从OceanBase TPCC测试报告看ORACLE兼容性进展
概述 2019年10月2日,TPC委员会在官网(tcp.org)发布了 TPC-C榜单的最新测试报告:OceanBase数据库TPC-C测试披露报告.下载地址:http://www.tpc.org/r ...
- oracle数据库好用,怎么才能更好的使用Oracle数据库系统?
1.having子句的使用方法 having子句对group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by子句中的列. 2.外部联接 " ...
- oracle数据库领域,菜鸟成长课程之《Oracle数据库职业直通车》,引领大家真正进入Oracle数据库领域...
课程简介: 近年来,Oracle数据库无疑是全球数据库领域中的领航者, Oracle DBA的待遇节节攀升, 导致了许多人希望转入这个行业.而Oracle数据库又因它的庞大和复杂另很多人望而却步,找不 ...
- oracle数据库集群采用的是形式,铁道部采用Oracle集群数据库进行TMIS系统“三级建库”...
综述 铁道部利用Oracle9i集群数据库系统(Oracle9i RAC),顺利开展铁道部运输管理信息系统(TMIS)的"三级建库"工程--在各铁路局和铁路分局利用Oracle9i ...
最新文章
- Http-tunnel突破单位网管封杀QQ、MSN端口的方法
- AI算法连载18:统计之EM 迭代算法
- 2019北京理工大学计算机专硕经验分享
- 自然语言处理——语言模型
- freemarker 如何获得list的索引值
- 远程桌面无法复制粘贴问题
- Minecraft在安卓手机上搭建java服务器
- VB获取一个文件夹中指定的文件或文件夹名称到列表
- 算力测试Linux,附录:计算力的标准Linpack测试详细指南(1)
- 第七十六篇 MIPI简单说明
- 关于ubuntu上,usb设备编号
- 围绕开源的系列思考之二——企业篇
- 线性代数 --- 什么叫线性组合 Linear Combination(个人笔记扫描版)
- Linux Update
- 学习HTML的第一天
- c语言数据结构课程设计电梯,数据结构课程设计报告(模拟电梯).doc
- 美团NLP以及知识图谱文章提炼
- 智能小区java_java毕业设计_springboot框架的模式下的智能小区规划系统
- iOS:机型参数、sdk、xcode各版本
- python wxpy模块,python wxpy模块 (一)简单上手
热门文章
- 解决vscode官网下载速度很慢
- 难以置信:字节AI-Lab这个领域面试居然没问AI知识
- 安卓学习UI组件-解决ScrollView嵌套ListView,GridView的冲突
- 新的CAD看图软件,查看图纸更方便
- 异步请求和同步请求的区别
- ajaxform的疑难杂症
- Tess4j linux 32,Tess4j文字识别库的相关研究
- 论文阅读Reconstructing CT from Biplanar X-Rays with Generative Adversarial Networks
- 支付宝直付通 VS 微信收付通分账产品异同
- 绩效考核六大认识误区解析(zt)