oracle 字符串匹配函数,将字符串拆分为多行---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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值