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

本文介绍了如何使用SQL中的substr和instr函数来实现字符串的截取和定位操作,通过具体实例展示了如何从特定字符串中提取所需部分。

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

函数介绍:

截取的函数:

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 ``` 通过这些方法,你可以根据需要截取字符串中多个逗号之前和之后的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值