怎么在 oracle 存储过程中 使用正则表达式!!!

dj9960 2004-10-13 03:32:20
打个比方我想把2:1中的2和1分别取出,怎么在 oracle 存储过程中 使用正则表达式把它取出!!!
...全文
420 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dj9960 2004-10-13
  • 打赏
  • 举报
回复
解决了,谢谢大家!!!
bzszp 2004-10-13
  • 打赏
  • 举报
回复
长度不是问题
15:53:00 SQL> declare
15:55:16 2 v_str varchar2(50):='1:341:3534:sefef:jtyj';
15:55:32 3 v_num number;
15:55:35 4 v_temp varchar2(10);
15:55:35 5 begin
15:55:35 6 for i in 1..length(v_str)-length(replace(translate(v_str,':',' '),' ','')) loop
15:55:35 7 v_temp:=substr(v_str,1,instr(v_str,':')-1);
15:55:35 8 v_str:=substr(v_str,instr(v_str,':')+1);
15:55:35 9 dbms_output.put_line(v_temp);
15:55:35 10 end loop;
15:55:35 11 dbms_output.put_line(v_str);
15:55:35 12 end;
15:55:35 13 /
1
341
3534
sefef
jtyj

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.31
15:55:35 SQL>

不知道你的用途
flamingo100 2004-10-13
  • 打赏
  • 举报
回复
先用instr找到:的位置,然后再利用substr()和length()截取
bzszp 2004-10-13
  • 打赏
  • 举报
回复
15:52:55 SQL> declare
15:52:58 2 v_str varchar2(50):='1:2:3:4:5';
15:52:58 3 v_num number;
15:52:58 4 v_temp varchar2(10);
15:52:58 5 begin
15:52:58 6 for i in 1..length(v_str)-length(replace(translate(v_str,':',' '),' ','')) loop
15:52:58 7 v_temp:=substr(v_str,1,instr(v_str,':')-1);
15:52:58 8 v_str:=substr(v_str,instr(v_str,':')+1);
15:52:58 9 dbms_output.put_line(v_temp);
15:52:58 10 end loop;
15:52:58 11 dbms_output.put_line(v_str);
15:52:59 12 end;
15:53:00 13 /
1
2
3
4
5

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.47
15:53:00 SQL>
zmgowin 2004-10-13
  • 打赏
  • 举报
回复
正则表达式的写法不会
zmgowin 2004-10-13
  • 打赏
  • 举报
回复
15:54:48 SQL> select * from t1;

A
----------
10:5
10:50
1:50
1:5

已用时间: 00: 00: 00.15
15:54:52 SQL> select substr(a,1,instr(a,':')-1) a,substr(a,instr(a,':')+1,length
(a)) b from t1;

A B
---------- ----------
10 5
10 50
1 50
1 5

已用时间: 00: 00: 00.15
dj9960 2004-10-13
  • 打赏
  • 举报
回复
呵呵,不行,:前后的数值长度不一样如果是10:1怎么办!!!,那个字段里有几万条类似于这样的数据!!!
bzszp 2004-10-13
  • 打赏
  • 举报
回复
15:45:11 SQL> select substr('2:1:3',instr('2:1:3',':',2)+1,
15:45:14 2 instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;

S
-
1

已用时间: 00: 00: 00.15
15:45:19 SQL> select substr('2:1:3',1,instr('2:1:3',':')-1) from dual;

S
-
2

已用时间: 00: 00: 00.15
15:45:36 SQL> select substr('2:1:3',instr('2:1:3',':',2)+1,
15:45:38 2 instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;

S
-
1

已用时间: 00: 00: 00.16
15:45:56 SQL> select substr('2:1:3',instr('2:1:3',':',3)+1) from dual;

S
-
3

已用时间: 00: 00: 00.16
15:46:02 SQL>
sywen 2004-10-13
  • 打赏
  • 举报
回复
用substr()函数不就行了吗
dj9960 2004-10-13
  • 打赏
  • 举报
回复
是的,把2:1 拆分成2和1
bzszp 2004-10-13
  • 打赏
  • 举报
回复
拆分字符串吗?
说的详细一点
第Ⅰ部分 核心数据库概念 第1章 Oracle Database 10g体系结构 第2章 安装Oracle Database 10g和创建数据库 第3章 升级到Oracle Database 10g 第4章 规划Oracle应用程序——方法、风险和标准 第Ⅱ部分 SQL和SQL*Plus 第5章 SQL的基本语法 第6章 基本的SQL*Plus报表及命令 第7章 文本信息的收集与修改 第8章 正则表达式搜索 第9章 数值处理 第10章 日期:过去、现在及日期的差 第11章 转换函数与变换函数 第12章 分组函数 第13章 当一个查询依赖于另一个查询时 第14章 一些复杂的技术 第15章 更改数据:插入﹑更新﹑合并和删除 第16章 DECODE和CASE SQL的if-then-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 Oracle基本安全 第Ⅲ部分 高级内容 第19章 高级安全性—— 虚拟专用数据库 第20章 使用表空间 第21章 用SQL*Loader加载数据 第22章 使用Data Pump导入和导出 第23章 访问远程数据 第24章 使用物化视图 第25章 使用Oracle Text进行文本搜索 第26章 使用外部表 第27章 使用回闪查询 第28章 回闪:表和数据库 第Ⅳ部分 Pl/SQL 第29章 PL/SQL简介 第30章 触发器 第31章 过程、函数与程序包 第32章 使用本地动态SQL和DBMS_SQL 第Ⅴ部分 对象关系数据库 第33章 实现类型、对象视图和方法 第34章 收集器(嵌套表和可变数组) 第35章 使用大对象 第36章 面向对象的高级概念 第Ⅶ部分 Oracle的Java 第37章 Java简介 第38章 JDBC程序设计 第39章 Java存储过程 第40章 Oracle真正应用群集 第41章 网格体系结构和管理 第Ⅷ部分 指南 第42章 Oracle数据字典指南 第43章 调整应用程序和SQL旅行者指南 第44章 调整的案例分析 第45章 Oracle Application Server 10g的旅行者指南 第46章 数据库管理旅行者指南 第47章 XML旅行者指南
第ⅰ部分 关键的数据库概念  第1章 oracle database 11g 体系结构  第2章 安装oracle database 11g 和创建数据库  第3章 升级到oracle database 11g  第4章 规划oracle 应用程序——方法、风险和标准 第ⅱ部分 sql 和sql*plus  第5章 sql 的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理  第10章 日期:过去、现在及日期的差  第11章 转换函数与变换函数  第12章 分组函数  第13章 当一个查询依赖于另一个查询时  第14章 一些复杂的技术  第15章 更改数据:插入﹑更新﹑合并和删除  第16章 decode 和case:sql的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区 . 第19章 oracle 基本安全 第ⅲ部分 高 级 主 题  第20章 高级安全性——虚拟专用数据库  第21章 高级安全性:透明数据加密  第22章 使用表空间  第23章 用sql*loader 加载数据  第24章 使用data pump export 和data pump import  第25章 访问远程数据  第26章 使用物化视图  第27章 使用oracle text 进行文本搜索  第28章 使用外部表  第29章 使用闪回查询  第30章 闪回:表和数据库  第31章 sql 重放 第ⅳ部分 pl/sql  第32章 pl/sql 简介  第33章 应用程序在线升级  第34章 触发器  第35章 过程、函数与程序包  第36章 使用本地动态sql 和dbms_sql  第37章 pl/sql 调整 第ⅴ部分 对象关系数据库  第38章 实现对象类型、对象视图和方法  第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 oracle 数据字典指南  第46章 应用程序和sql 调整指南  第47章 sql 结果缓存和客户端查询缓存  第48章 关于调整的示例分析  第49章 高级体系结构选项—— db保险库、内容db 和记录db  第50章 oracle 实时应用群集  第51章 数据库管理指南  第52章 oracle 的xml 指南 第ⅷ部分 附 录 附录a 命令和术语参考

17,078

社区成员

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

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