oracle substr、instr以及case when 的连用截取字符串以及替换(repace)的使用

本文介绍了两种在SQL中处理字符串的方法:一种是通过组合使用substr、casewhen和instr函数来截取特定子串;另一种是利用replace函数进行字符串替换。这两种方法在实际项目中都非常实用。

最近项目上使用到截取的字符串  后来发现经同事提醒 发现replace比较简单 则又换成了replace ,都给记录一下,以便帮助人;

如下,现需要将某个字段的-本部 给截取掉:

1. substr、case when、instr等函数 连用:

 substr(oc.fname_l2,0,case when instr(oc.fname_l2,'-本部')>0 then instr(oc.fname_l2,'-本部')-1 else length(oc.fname_l2)  end) as bankcompanyname



2.

replace这个函数,具体用法如下:

update 表1 t set t.列1=replace((select 列1from 表1 a where a.主键列=t.主键列) , '/' , '-' )  解决了我们问题。

replace 函数用法如下:

replace('将要更改的字符串','被替换掉的字符串','替换字符串')

例:select  replace ('111222333444','222','888') from dual;

输出为 '111888333444'





      






### 三、SUBSTRINSTR 的联合使用方法 在 Oracle 中,`SUBSTR` 和 `INSTR` 函数经常结合使用,以实现对字符串中特定部分的截取。通过 `INSTR` 查找子串的位置,再配合 `SUBSTR` 根据该位置进行截取,可以灵活地提取出目标字符串中的部分内容。 #### 示例:截取两个特定字符之间的内容 假设有一个字符串 `'value1-value2-value3'`,需要截取第一个 `"-"` 和第二个 `"-"` 之间的内容(即 `'value2'`),可以通过以下方式实现: ```sql SELECT SUBSTR( 'value1-value2-value3', INSTR('value1-value2-value3', '-', 1, 1) + 1, INSTR('value1-value2-value3', '-', 1, 2) - INSTR('value1-value2-value3', '-', 1, 1) - 1 ) AS result FROM dual; ``` - 第一个 `INSTR` 用于定位第一个 `"-"` 的位置; - 第二个 `INSTR` 用于定位第二个 `"-"` 的位置; - `SUBSTR` 则根据这两个位置截取中间的内容[^2]。 #### 示例:从右侧开始查找并截取 若需从字符串末尾向前查找某个字符的位置,并截取其后的内容,可结合负数起始位置使用 `INSTR`: ```sql SELECT SUBSTR( 'Hello World', INSTR('Hello World', ' ', -1, 1) + 1 ) AS result FROM dual; ``` 此查询将返回 `'World'`,即最后一个空格后的内容。利用 `INSTR` 从右向左搜索空格位置,再通过 `SUBSTR` 截取其后部分[^1]。 #### 示例:处理多个分隔符的情况 当字符串中存在多个相同分隔符时,可通过指定 `nth_appearance` 参数来控制匹配次数,从而实现更复杂的截取逻辑: ```sql SELECT SUBSTR( 'a-b-c-d-e', INSTR('a-b-c-d-e', '-', 1, 2) + 1, INSTR('a-b-c-d-e', '-', 1, 3) - INSTR('a-b-c-d-e', '-', 1, 2) - 1 ) AS result FROM dual; ``` 此例中,先找到第二个 `"-"` 的位置,再找到第三个 `"-"` 的位置,最终截取两者之间的内容 `'c'`。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值