oracle 分割 substr,substr、instr用法以及ORACLE里的字符分割

本文分享了如何使用SQL的substr和instr函数在Oracle中对含有特殊符号分隔的文字描述进行有效切割,记录了解决思路并提供了示例。讨论了 instr 和 substr 的用法,以及在没有len()的情况下如何替代。
摘要由CSDN通过智能技术生成

今天工作的时候需要对事物描述分割取出具体细节,细节分割用特殊符号分开如“文字描述1文字描述2文字描述3” AS 描述字段

经过一番折腾,终于写出分割的SQL,纪录思路如下,顺便记录下substr以及instr的用法,若有更好的方法望可以告知-0-

结果:

“substr(描述字段,

0,

instr(描述字段'')-1) AS

文字描述1,”

“substr(substr(描述字段,instr(描述字段,'',1,1)),

2,

instr(substr(描述字段,instr(描述字段,'')+1),'')-1) AS

文字描述2,”

“substr(描述字段,instr(描述字段,'',1,2)),2) AS 文字描述3”

思路如下:

1、取“文字描述1”:

“substr(描述字段,

0,

instr(描述字段,'')-1) AS

文字描述1,”

很简单,首先用instr取出“描述字段”中,到第一个分隔符''的位数,然后用substr取该位数-1(去掉分隔符)的所有字符,即可取出“文字描述1”

2、取“文字描述3”:

“substr(描述字段,instr(描述字段,'',1,2)),2) AS 文字描述3”

也很简单,首先用instr取出“描述字段”中,到第二个分隔符''的位数,然后从第二位开始(第一位是分隔符)取出剩下字段,即可取出“文字描述3”

3、取“文字描述2”

“substr(substr(描述字段,instr(描述字段,'',1,1)),

2,

instr(substr(描述字段,instr(描述字段,'')+1),'')-1) AS

文字描述2,”

这是我折腾了最久的地方,因为需要确定首尾的分隔符。

首先是用substr(描述字段,instr(描述字段,'',1,1))确定要取的字段,然后剩下的文字描述中,从第二个字符起(跳过分隔符),然后用instr(substr(描述字段,instr(描述字段,'')+1),'')-1)确定之后的要取出的字符长度

后面发现这里可以想法在取的字符里掐头逻辑看起来更好,,可以改用

substr(substr(描述字段,instr(描述字段,'',1,1)),

2,

改成

substr(描述字段,instr(描述字段,'',1,1)+1),

1

这里掐头和后面的

instr(substr(描述字段,instr(描述字段,'')+1),'')-1)

去尾搭配

看起来更加清晰

补充用法:

instr用法:insrt(原字符串,要查找字符,开始位置(数字,可选,默认1),第几次出现(数字,可选,默认1,为负数报错))

substr用法:substr(字符串,从第几位开始截取(默认0),取几位(默认全取))

顺便一个意外,在ORACLE里没有len(),而采用length()代替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值