oracle函数regexp_substr()的使用

环境:Oracle10.2.0.5

在SQL中尝试使用正则

可以试下regexp_substr()来进行分割

首先创建一个实验视图:

SQL> create or replace view test_ip as select '192.168.1.1' as ip from dual

  2  union all

  3  select '192.168.1.2' as  ip from dual 

  4  union all 

  5  select '192.168.1.3' as  ip from dual

  6  union all

  7  select '192.168.1.4' as  ip from dual;

创建了一个视图,查看下视图的整体结构

SQL> select * from test_ip;

IP

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

现在有一个需求,需要将这些ip以“.”为分隔符,分段显示ip

最终效果如下:

IP1                    IP2                    IP3                    IP4

---------------------- ---------------------- ---------------------- ----------------------

192                    168                    1                      1

192                    168                    1                      2

192                    168                    1                      3

192                    168                    1                      4

执行的SQL如下:

select regexp_substr(a.ip, ‘.+’, 1, 1) ip1,

   regexp_substr(a.ip, '[^.]+', 1, 2) ip2,
   regexp_substr(a.ip, '[^.]+', 1, 3) ip3,
   regexp_substr(a.ip, '[^.]+', 1, 4) ip4

from test_ip a;

分析:

regexp_substr()括号中的

. -->代表除了“.”以外的全部字段

  • –>表示匹配1次以上

1 -->从第一个“.”开始

2 -->匹配到的第二个字段

这样就能达到这个效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值