求一个oracle字符串解析函数

MIS_ECSM 2010-11-20 03:41:55
求一个oracle函数,具体要求如下:
输入参数1:varchar2,以分号分隔多个内容,如“11;22;3323;abc;ddd”
输入参数2:integer数值,返回值的位置

输出参数:varchar2;输出参数是输入参数1中,第《输入参数2》个用";"分隔的值;
例如:
输入参数('11;22;3323;abc;ddd',1),返回 11
输入参数('11;22;3323;abc;ddd',4),返回 abc

...全文
168 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
YY_MM_DD 2010-11-20
  • 打赏
  • 举报
回复


SQL> create or replace procedure checkStr(inputStr varchar2,appearCount in num
r,returnStr out varchar2)
2 as
3 begin
4 if appearCount=1 then
5 select substr(inputStr,0,instr(inputstr,';',1,1)-1) into ret
nStr from dual;
6 else
7 dbms_output.put_line(instr(inputStr,';',1,appearCount-1));
8 dbms_output.put_line(instr(inputStr,';',1,appearCount));
9 select substr(inputStr,instr(inputStr,';',1,appearCount-1)+1
nstr(inputStr,';',1,appearCount)-instr(inputStr,';',1,appearCount-1)-1) into r
urnStr from dual;
10 end if;
11 end;
12 /

过程已创建。

SQL> declare
2 rstr varchar2(20);
3 begin
4 checkStr('11;22;3323;abc;ddd',4,rstr);
5 dbms_output.put_line(rstr);
6 end;
7 /
11
15
abc

PL/SQL 过程已成功完成。

SQL> declare
2 rstr varchar2(20);
3 begin
4 checkStr('11;22;3323;abc;ddd',3,rstr);
5 dbms_output.put_line(rstr);
6 end;
7 /
6
11
3323

PL/SQL 过程已成功完成。

SQL>
tangren 2010-11-20
  • 打赏
  • 举报
回复
--通用一点,可指定分隔符
CREATE OR REPLACE FUNCTION getstr(str VARCHAR2, n PLS_INTEGER, delim CHAR) RETURN VARCHAR2 IS
tempstr VARCHAR2(2000);
--str :原始字符串
--n :取第几个字符串
--delim:分隔符
--调用方式: getstr('11;22;3323;abc;ddd',3,';')
BEGIN
tempstr := delim || str || delim;
RETURN substr(tempstr,
instr(tempstr, delim, 1, n) + 1,
instr(tempstr, delim, 1, n + 1) - instr(tempstr, delim, 1, n) - 1);
END;
/
心中的彩虹 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wkc168 的回复:]
select substr(';'||id||';',instr(';'||id||';',';',1,i)+1,instr(';'||id||';',';',1,i+1)-instr(';'||id||';',';',1,i)-1) from tb
[/Quote]

SQL> edi
已写入 file afiedt.buf

1 create or replace function fun_zf(str varchar2,i number) return varchar2
2 as
3 id varchar2(100);
4 str2 varchar2(100);
5 begin
6 id:=';'||str||';';
7 select
8 substr(id,instr(id,';',1,i)+1,instr(id,';',1,i+1)-instr(id,';',1,i)-1) into str2
9 from dual;
10 return str2;
11* end;
SQL> /

函数已创建。

SQL> select fun_zf('11;22;3323;abc;ddd',1) from dual
2 /

FUN_ZF('11;22;3323;ABC;DDD',1)
--------------------------------------------------------------------------------
11

SQL> select fun_zf('11;22;3323;abc;ddd',4) from dual
2 /

FUN_ZF('11;22;3323;ABC;DDD',4)
--------------------------------------------------------------------------------
abc



YY_MM_DD 2010-11-20
  • 打赏
  • 举报
回复
------使用instr(startStr,appearstr,startposition,appearAount)封号出现的次数。
select substr(str,instr(str,';',1,i-1)+2,instr(str,';',1,i)-2) from dual
心中的彩虹 2010-11-20
  • 打赏
  • 举报
回复
select substr(';'||id||';',instr(';'||id||';',';',1,i)+1,instr(';'||id||';',';',1,i+1)-instr(';'||id||';',';',1,i)-1) from tb
PHP初学者的首选,被誉为PHP的圣经 导读 第一章 PHP 介绍 来龙去脉 功能概述 PHP 与其它 CGI 的比较 第二章 安装与配置 环境需与准备工作 快速配置及安装 PHP 的编译配置详细选项 php.ini 配置详细选项 如何写作 PHP 程序 第三章 语法 语法简述 hello, world 嵌入方法 引用文件 程序注释 常量与变量 常量类型 变量类型 变量的使用 运算符号 算术运算 字符串运算 赋值运算 位运算 逻辑运算 其它运算符号 流程控制 if..else 循环 do..while 循环 for 循环 switch 循环 其它的流程控制 函数与类 函数 类 第四章 函数库及函数 Adabas D 数据库链接函数库 apache服务器专用函数库 数组处理函数库 拼写检查函数库 BC 高精确度函数库 历法函数库 ClibPDF 函数库 日期与时间函数库 DBA 函数库 dBase 格式资料表函数库 dbm 类数据库函数库 目录管理函数库 动态链接函数库 程序执行功能函数库 FDF 函数库 filePro 数据库函数库 文件系统函数库 HTTP 相关函数库 Hyperwave 服务器函数库 图形处理函数库 IMAP 电子邮件系统函数库 PHP 选项及相关信息函数库 Informix 数据库函数库 InterBase 数据库函数库 LDAP 目录协议函数库 电子邮件函数库 数学运算函数库 mcrypt 编码函数库 mhash 哈稀函数库 杂项函数库 mSQL 数据库函数库 SQL Server 数据库函数库 MySQL 数据库函数库 Sybase 数据库函数库 网络函数库 NIS 函数库 ODBC 数据库链接函数Oracle 8 数据库函数Oracle 数据库函数库 Perl 相容语法函数库 PDF 格式文件函数库 PostgreSQL 数据库函数库 正则表达式函数库 信号与共享内存函数库 Solid 数据库链接函数库 SNMP 网管函数字符串处理函数库 URL 处理函数库 变量处理函数库 Vmailmgr 邮件处理函数库 WDDX 函数库 压缩文件函数库 XML 解析函数库 Session 函数库 GNU 记录函数库 FTP 文件传输函数库 MCAL 模块日历存取函数库 第五章 范例程序 访客计数器 用户认证 聊天室 留言板 意见信箱 广告轮播 附录 A 函数索引

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧