入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-03-29 投稿人: 浏览次数:4905
要求: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 ......
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像