加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

将字符串拆分为多行---Oracle正则表达式函数REGEXP_SUBSTR

(2013-01-09 16:13:54)
标签:

oracle

regexp_substr

函数

字符串

正则表达式

分类: 数据库

问题描述:将一个长字符串按照一定规则分割为多行。

实际问题:临时表table1_temp中存储由ID号组成,由逗号相隔的一个字符串(表中只有一个字段,ID号个数可能是从1 to 100000之间的任意随机数字,每次插入前都先清空表)。现在需要执行如下操作:select * from table2 where id in (),括号中应为table1_temp中字符串中的id号,但是由于临时表中记录的是一个字符串,随想要将字符串按照id号,分割为多行。

 

问题解决:通过函数REGEXP_SUBSTR()实现。

参数介绍

第1个是输入的字符串

第2个是正则表达式

第3个是标识从第几个字符开始正则表达式匹配。(默认为1)

第4个是标识第几个匹配组。(默认为1)

第5个是是取值范围:

i:大小写不敏感;

c:大小写敏感;

n:点号 . 不匹配换行符号;

m:多行模式;

x:扩展模式,忽略正则表达式中的空白字符。

 

测试例子:

将字符串拆分为多行

SQL> SELECT REGEXP_SUBSTR('a,b,c,d,e', '[^,]', 1, ROWNUM)
FROM DUAL
CONNECT BY ROWNUM <=
           LENGTH('a,b,c,d,e') -
           LENGTH(TRANSLATE('a,b,c,d,e', 'abcdefghijklmnopqrstuvwxyz', '$')) + 1;

------------------------------
a
b
c
d
e

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有