oracle截取某个字符前面的字符串
2015-12-22 17:23
441 查看
已验证。
要求: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 ......
要求: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 ......
相关文章推荐
- oracle中截取某个字符前面和后面的值
- 解决Navicat无法连接Oracle的问题
- oracle 查询表属于哪个表空间
- xbrl-创建表空间以及用户并给用户授权
- Oracle中慎用Like等通配符
- oracle存储过程中RAISE_APPLICATION_ERROR用法
- Oracle ODI 11g创建ODI Agent代理
- oracle中 判断是否 有记录 然后插入的sql语句
- Oracle设置和删除归档日志
- mybatis之mysql&oracle 批量操作
- Oracle 静默安装方式
- oracle 安装出现文件找不到的错误
- Oracle用户重命令
- Oracle 11g 安装图文步骤
- oracle和MySQL区别
- oracle根据正则表达式查找对应的字段
- oracle 控制台输出
- oracle 11g RAC 常用命令
- Oracle的DBMS_OUTPUT.PUT_LINE用法及脚本批处理方法
- oracle归档模式和非归档模式的切换