Oracle中REGEXP_SUBSTR函数

摘要:
在Oracle中的REGEXP_ SUBSTR函数在Oracle中REGEXP_使用SUBSTR函数的说明:主题如下:在Oracle中,使用语句将“17、20、23”拆分为“17”、“20”和“23”集合。

Oracle中REGEXP_SUBSTR函数

Oracle中REGEXP_SUBSTR函数的使用说明:

题目如下:

在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合。

REGEXP_SUBSTR函数格式如下:

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

__srcstr     :需要进行正则处理的字符串

__pattern    :进行匹配的正则表达式

__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)

__occurrence :标识第几个匹配组,默认为1

__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

1、查询使用正则分割后的第一个值,也就是17

[sql] 

SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;  

结果:  www.2cto.com  

STR

-----

17

2、查询使用正则分割后的最后一个值,也就是23

[sql] 

SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM DUAL;  

结果:

STR

----

23

3、获取一个多个数值的列,从而能够让结果以多行的形式展示出来

[sql] 

SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;  

结果:  www.2cto.com  

LEVEL

----

1

2

3

4

5

6

7

4、将上面REGEXP_SUBSTR的occurrence关联

[sql] 

SELECT NVL(REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR  

  FROM DUAL  

CONNECT BY LEVEL <= 7;  

STR  www.2cto.com  

----

17

20

23

NULL

NULL

NULL

NULL

5、优化上面的SQL语句,让生成的行的数量符合实际情况

[sql] 

SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR  

  FROM DUAL  

CONNECT BY LEVEL <=  

           LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1;  

STR

----

17

20

23

免责声明:文章转载自《Oracle中REGEXP_SUBSTR函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C++的MFC 与 HTML 双向通讯notepad++和sublime 常用插件及主题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

出现 "System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本" 错误的解决办法

出现 "System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本" 错误的解决办法 1.问题: 在Windows SP2 + VS2005 + Oracle 9i +IIS5.1环境中运行ASP.NET网页的时候出现如下错误: System.Data.OracleClient 需要 Oracle 客户端软...

WebLogic浅析

WebLogic安装 官网下载安装过程没啥特别的,不多说了自己去看吧! WebLogic简介   WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和...

oracle最大连接数导致应用挂掉

配置keepalive+nginx高可用的时候,启动了应用,发现连接到后台的数据库报错: Caused by: java.sql.SQLRecoverableException: IO 错误: Socket read timed out at oracle.jdbc.driver.T4CConnection.logon(T4CConnection....

(转)对Oracle导出文件错误和DMP文件结构的分析,EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier

  EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier 原因:oracle版本不一样 执行 C:/>EXP plx/plx@orcl  FILE=c:/plx.dmp TABLES=(s,sc,c) 结果报错 Export: Release 11.1.0.6.0...

ORACLE无法删除当前连接用户

今天在做Oracle数据库是遇到ORACLE无法删除当前连接用户,经查找可用如下方法解决 。 在Oracle中删除用户时提示:ORACLE无法删除当前连接用户 可以用以下语句 Sql代码 SQL> select username,sid,serial# from v$session; USERNAME SID SERIAL# ---------...

oracle 内置函数(一)数值函数

oracle内置函数主要分为四类: 数值函数 字符函数 日期函数 转换函数 本分析数值函数: 一、四舍五入round round(double,m) double:我们要处理的小数。 m: default:在不填写的情况下默认为0,也就是取整; m>0:四舍五入小数点后m位; m<0:四舍五入小数点前m位。 example: 二、取整 c...