oracle截取字符串(截取某个字符前面的字符串)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle截取字符串(截取某个字符前⾯的字符串)要求:A.数据库表中的⼀个字符串可能含有"+" 例:ORC+001
也可能不含“+”
B.要求如果该字符串含有“+”,则取“+”之前的字符例:ORC+001 取ORC
C.如果该字符串不含"+",则直接取该字符串。

解答:利⽤ORACLE中 INSTR,SUBSTR以及CASE WHEN语法即可实现。

Oracle中函数
INSTR:INSTR⽅法的格式为
INSTR(源字符串, ⽬标字符串, 起始位置, 匹配序号)
默认查找顺序为从左到右。

当起始位置为负数的时候,从右边开始查找。

例:Select INSTR(‘ORC+001‘,‘+‘,1,1) from dual
返回的是"4" 如果该字符串没有匹配字符 返回的是“0”。

SUBSTR:取⼦字符串 取⼦字符串
SUBSTR(源字符串,起始位置,要取多少位)
从“起始位置”开始,取“多少"个
例 Select SUBSTR(‘ORC+001‘,1,3) from dual;
返回的是“ORC”
全例如下
表T_RCV_ISSUE
WH_CD字段
取 WH_CD 如果该字段包含"+",取“+”之前的字符
如果该字段没有"+",取整个字段
T_RCV_ISSUE表
WH_CD 分别为 MR-PS+007,MR-WS,MR-WS+001,MR-PS
执⾏
SELECT CASE
WHEN INSTR(WH_CD, ‘+‘, 1, 1) > 0
THEN SUBSTR(WH_CD, 1, INSTR(WH_CD, ‘+‘, 1, 1) - 1)
ELSE WH_CD
END AS WH_CD
from T_RCV_ISSUE
结果:MR-PS,MR-WS,MR-WS,MR-PS ......。

相关文档
最新文档