问:我的数据库里有一列包含如下数据: TME_DTE=”20080111″; PRD_SLBL=”24310801″; OWS_CCT_LIN=” SALES”; OWS_CUS_GRP=”D”; OWS_SLS_ORG=”BOP”; GGY_ACG_DPO=”BPA”; TPT_SHP_CND=”1C”; OWS_ERP_CUS=”15……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:我的数据库里有一列包含如下数据:
TME_DTE="20080111"; PRD_SLBL="24310801"; OWS_CCT_LIN=" SALES"; OWS_CUS_GRP="D"; OWS_SLS_ORG="BOP"; GGY_ACG_DPO="BPA"; TPT_SHP_CND="1C"; OWS_ERP_CUS="154997"; UOM="L20"; PRD_ACL_DEN="1"; QTY="21807.104"; TIMEZONE="CST"; DOCNO=; |
我只想从上述列中提取ERP客户数量。如果我以一列为例并且使用INSTR函数,我就能找到我想开始提取数据的地方:149。同样,使用SUBSTR(’string’,149,6)我也能够获得我寻找的ERP客户数据。问题就是:我如何用SUBSTR函数找出我的表中所有含有ERP客户数量的行?
答:答案就是使用嵌入式SQL串函数。将INSTR函数嵌入SUBSTR函数中。
select SUBSTR(datacolumn , INSTR(datacolumn,’OWS_ERP_CUS="’,1,1)+13 , 6) AS ERP_cust FROM ... |
INSTR函数不会返回到出现OWS_ERP_CUS="的地方。对于这个位置,你必须增加13,向前移到客户数量的第一个字符。然后用SUBSTR取出6个字符。
翻译
相关推荐
-
在SQL中使用SELECT进行算术运算
如何在不使用SQL算术运算符而仅仅使用SELECT的情况下完成数学运算,Oracle数据库专家给出了解答。
-
分析并行SQL中的各个元素
并行度(DOP)定义了将被创建的执行并行流的数量。最简单的情况,它可以理解为分配为支持你SQL执行的并行伺服进程的数量。
-
在Oracle里提高SQL执行效率的三种方法
Oracle提供了多种方法用于减少花在剖析Oracle SQL表达式上的时间,在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能。
-
使用Oracle SQL Developer和其他开发工具
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。