在项目实施阶段,遇到这样的情况,原始设计是将附件的地址存放在一个单元格中,这个单元格后期务必要改为clob类型,最后根据附件地址取值时,需要将地址根据 特殊标识 来拆分。确实比较恶心 ,但是没法,附件涉及到太多的功能模块,重新设计表结构不太现实,
这时候 oracle的regexp_subter函数就派上用场了。
下面看一下它的具体用法吧
SELECT num,
OAFileId,
REGEXP_SUBSTR(CPMIS_OA_FILES.DownloadURL2,'[^;]+',1,num) AS downloadurl
FROM CPMIS_OA_FILES ,
(SELECT LEVEL num FROM DUAL CONNECT BY LEVEL<=100
)
WHERE num <=LENGTH(CPMIS_OA_FILES.DownloadURL2) - LENGTH(REPLACE(CPMIS_OA_FILES.DownloadURL2,';'))+1
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
分享到:
相关推荐
实训商业源码-抽奖模块V2.4.4 开源版-毕业设计.zip
实训商业源码-酷炫小程序相册V4.7.0 前端+后端-毕业设计.zip
实训商业源码-QQ域名防报毒网站程序PHP源码 带后台-毕业设计.zip
实训商业源码-便利店小程序 1.0.9-毕业设计.zip
实训商业源码-H5手机转盘活动游戏页面源码-毕业设计.zip
实训商业源码- 视频小店V1.0.4 原版-毕业设计.zip
实训商业源码-仿B站风格视频影视电影网站源码-毕业设计.zip
实训商业源码-C风格门户版1.1 UTF8+GBK-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-星尘.zip
实训商业源码-酷炫小程序相册 4.5.8-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-一天,一生.zip
scratch少儿编程逻辑思维游戏源码-线路关闭.zip
内容概要:本文详细介绍了如何利用MATLAB/Simulink搭建独立运行的光伏混储微电网系统。主要内容涵盖光伏的最大功率点跟踪(MPPT)控制方法,尤其是扰动观察法(P&O)的具体实现及其优化技巧;混合储能系统的功率分配策略,包括采用低通滤波器将功率需求分为低频和高频分量分别由蓄电池和超级电容承担;以及针对不同储能元件的特殊控制措施,如蓄电池的充放电效率补偿和超级电容的限流保护。此外,还讨论了仿真调试过程中的常见问题及解决方案,强调了各子系统的协同工作对于整个系统稳定性的重要意义。 适合人群:从事电力电子、新能源发电领域的研究人员和技术人员,尤其适用于有一定MATLAB/Simulink基础并对光伏混储微电网感兴趣的读者。 使用场景及目标:帮助读者掌握光伏混储微电网的设计与实现方法,特别是在MATLAB/Simulink环境下进行系统建模、仿真和优化的能力。通过学习本文提供的具体案例和技术细节,能够更好地理解和解决实际工程中遇到的问题。 其他说明:文中提供了大量实用的代码片段和调试经验,有助于加深对理论知识的理解并提高动手能力。同时提醒读者关注各个组件之间的相互影响,确保系统整体性能最优。
【低空经济】低空人工智能调度中心建设方案
coneypo_ML_handwritten_number_21976_1746366665585.zip
scratch少儿编程逻辑思维游戏源码-足球传送门.zip
scratch少儿编程逻辑思维游戏源码-诅咒大厦.zip
内容概要:本文详细介绍了二进制比较器的设计原理与实现方法。文章首先讲解了二进制比较器的基本概念,包括32位数字比较器的原理图绘制方法。文中提到可以使用二进制比较芯片(如74LS85)组合实现大于、等于、小于的功能,其中不等是通过大于和小于的或逻辑并归实现,大于则是芯片固有的功能,小于等于则是等于和小于的或逻辑并归。对于门电路合成,文章提到了使用74LS04D+08+86等元件组成一位二进制比较器,但指出位数增加会使逻辑变得复杂,不推荐自行合成。此外,还介绍了2位二进制比较器的工作原理,当高位不同时无需比较低位,只有当高位相同时才需要比较低位。最后,文章讨论了集成数值比较器74LS85的功能及其位数扩展方式,包括串联和并联两种扩展方法。 适合人群:具有一定的数字电路基础,对二进制比较器感兴趣的电子工程学生或工程师。 使用场景及目标:①理解二进制比较器的基本原理和工作方式;②掌握二进制比较器的硬件实现方法,特别是如何利用现有芯片构建多位比较器;③学习如何通过逻辑门电路实现简单的二进制比较功能。 阅读建议:读者在学习过程中应结合实际电路图和逻辑表达式进行理解和验证,特别是对于不同位数的二进制比较器,可以通过实际搭建电路来加深理解。
实训商业源码-PHP短网址生成系统-毕业设计.zip
内容概要:本文详细介绍了如何使用LabVIEW通过CIP协议与欧姆龙PLC进行高效的TCP网口通讯。相比传统的Fins协议,CIP协议提供了更为简便和高效的通信方式,适用于多种数据类型的读写操作,包括自定义变量、字符串、数值类型(如I16、I32、Float、Double)、数组以及布尔类型。文中不仅展示了具体的LabVIEW VI函数及其使用方法,还提供了实际测试数据和性能对比,证明了CIP协议在响应速度、带宽利用率等方面的优势。此外,文章还分享了一些实用技巧和注意事项,帮助开发者避免常见错误并提高开发效率。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是熟悉LabVIEW和欧姆龙PLC的用户。 使用场景及目标:① 实现LabVIEW与欧姆龙PLC之间的高效通信;② 提升数据传输的速度和稳定性;③ 简化复杂的数据类型处理过程;④ 避免传统Fins协议带来的繁琐地址转换。 其他说明:文章附带了完整的源码和多个典型应用场景,便于读者快速上手实践。同时,强调了在实际应用中需要注意的一些细节,如PLC端配置、标签命名规则等。