oracle截取某一个字符之前或之后的值;substr();instr()

本文介绍了如何使用SQL中的substr和instr函数来精确地截取字符串中的特定部分。通过实例演示了如何从包含特定分隔符的字符串中提取所需的数据片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://www.cnblogs.com/wangkang0320/p/6743965.html

函数介绍:
截取的函数:
substr(?,?);
substr(?,?,?);
这里写图片描述
获取目标字符出现的位置:
instr(? , ? , ? );
instr( ? , ? , ? , ? )
这里写图片描述
例:

字符串 “AAA-BBB” 截取”AAA” “BBB”

select substr('AAA-BBB',1,instr('AAA-BBB','-',-1)-1) 值 from dual;

这里写图片描述

select substr('AAA-BBB',instr('AAA-BBB','-',-1)+1) 值 from dual;

这里写图片描述

Oracle数据库中,截取字符串中多个逗号之前和之后的内容可以使用多种字符串函数,如`INSTR`、`SUBSTR`和`REVERSE`。以下是一些常见的方法: ### 截取最后一个逗号之前字符串 假设有一个字符串`str`,我们想要截取最后一个逗号之前的部分: ```sql SELECT SUBSTR(str, 1, INSTR(str, ',', -1) - 1) AS before_last_comma FROM your_table; ``` ### 截取最后一个逗号之后的字符串 假设有一个字符串`str`,我们想要截取最后一个逗号之后的部分: ```sql SELECT SUBSTR(str, INSTR(str, ',', -1) + 1) AS after_last_comma FROM your_table; ``` ### 截取一个逗号之前字符串 假设有一个字符串`str`,我们想要截取一个逗号之前的部分: ```sql SELECT SUBSTR(str, 1, INSTR(str, ',') - 1) AS before_first_comma FROM your_table; ``` ### 截取一个逗号之后的字符串 假设有一个字符串`str`,我们想要截取一个逗号之后的部分: ```sql SELECT SUBSTR(str, INSTR(str, ',') + 1) AS after_first_comma FROM your_table; ``` ### 示例 假设有以下表`your_table`: ```sql CREATE TABLE your_table ( id NUMBER, str VARCHAR2(100) ); INSERT INTO your_table (id, str) VALUES (1, 'a,b,c,d'); INSERT INTO your_table (id, str) VALUES (2, 'x,y,z'); ``` 执行上述SQL语句: ```sql SELECT SUBSTR(str, 1, INSTR(str, ',', -1) - 1) AS before_last_comma, SUBSTR(str, INSTR(str, ',', -1) + 1) AS after_last_comma, SUBSTR(str, 1, INSTR(str, ',') - 1) AS before_first_comma, SUBSTR(str, INSTR(str, ',') + 1) AS after_first_comma FROM your_table; ``` ### 结果 ``` before_last_comma | after_last_comma | before_first_comma | after_first_comma -------------------|-------------------|--------------------|-------------------- a,b,c | d | a | b,c,d x,y | z | x | y,z ``` 通过这些方法,你可以根据需要截取字符串中多个逗号之前和之后的内容。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值