已验证。

要求: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截取某个字符前面的字符串的更多相关文章

  1. oracle截取字段中的部分字符串

    使用Oracle中Instr()和substr()函数: 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: instr(sourceString,de ...

  2. mysql中截取指定字符前后的字符串

    使用SUBSTRING_INDEX()函数substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子取出上述表中数组的第 ...

  3. PHP截取指定字符前的字符串

    $str = 'A|B||C|D'; echo substr($str,0,strpos($str, '||')); 输出:A|B

  4. Oracle 截取字符串(截取固定分隔符中间的字符

    #### Oracle 截取字符串(截取固定分隔符中间的字符) #### ####  oracle 取固定分隔符之间的字符--方法一 substr+ instrSELECT  substr('12JP ...

  5. 《oracle每日一练》oracle截取字符的函数

    转载 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceStri ...

  6. Oracle截取字符串和查找字符串

    oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏 常用函数:substr和instr 1.SUBSTR(string,s ...

  7. Oracle截取字符串函数和查找字符串函数,连接运算符||

    参考资料:Oracle截取字符串和查找字符串 oracle自定义函数学习和连接运算符(||) oracle 截取字符(substr),检索字符位置(instr) case when then else ...

  8. oracle截取字符串,定索引

    转载:https://www.cnblogs.com/qmfsun/p/4493918.html 使用Oracle中Instr()和substr()函数: 1 2 3 4 5 6 7 8 9 10 1 ...

  9. Oracle 截取、查找字符函数(持续更新)

    整理一些常用的截取.查找字符函数: 1.查找某一个字符串中某一个字符(串)出现的次数 SELECT LENGTH(REGEXP_REPLACE(REPLACE('anne<br>lily& ...

随机推荐

  1. SPOJ371 Boxes(最小费用最大流)

    把球当作水. #include<cstdio> #include<cstring> #include<queue> #include<algorithm> ...

  2. POJ1625 Censored!(AC自动机+DP)

    题目问长度m不包含一些不文明单词的字符串有多少个. 依然是水水的AC自动机+DP..做完后发现居然和POJ2778是一道题,回过头来看都水水的... dp[i][j]表示长度i(在自动机转移i步)且后 ...

  3. WPF 碰撞检测

    have tested this, it worked, at least for me var x1 = Canvas.GetLeft(e1); var y1 = Canvas.GetTop(e1) ...

  4. ZOJ 3911 Prime Query ZOJ Monthly, October 2015 - I

    Prime Query Time Limit: 1 Second      Memory Limit: 196608 KB You are given a simple task. Given a s ...

  5. BZOJ3642 : [CEOI 2014] Cake

    rank[i]表示第i美味的是哪块 left[i]表示在k左边美味度为i的是哪块 right[i]表示在k右边美味度为i的是哪块 用3棵线段树分别维护d序列的区间最大值.left序列的区间最大值.ri ...

  6. ueditor使用总结——前端篇.md

    首先吐槽下,百度的API太坑,谁让人家都是大牛呢. 说明:本文所涉猎代码均依托于seajs,本文所用ueditor版本为1.4.3.3 JSP UTF-8版 编辑器前端部署: 1.把ueditor引入 ...

  7. 关于实现banner轮换的问题,如何修改

    最近遇到了这样的问题,本来banner都是gif格式的,但是现在要求上传图片格式为jpg时,运用JS实现动画效果,原来的也能用. aspx: <div id="bh" run ...

  8. Android 通用流行框架大全

    1. 缓存 DiskLruCache    Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...

  9. CSS系列:less备忘

    less备忘 //这是一个运行在koala中的less文件,//注释不会被编译到css文件中,/**/注释会 ****************by 李可 2016/04/19 /*所有,所有伪类*/ ...

  10. apache日志文件太大的问题

    apache日志文件太大的问题 处理Apache日志的两种方法 rotatelogs 是 Apache 2.2 中自带的管道日志程序 rotatelogs [ -l ] logfile [ rotat ...