plsql 中substr函数和instr函数的灵活应用

  我一直觉得一个技术大牛,都是能够很好的应用基础知识,基础知识不牢,会造成我们在实际应用中会感到困惑,进而影响到我们更好的发挥,substr函数和instr函数的灵活应用是建立在熟知各个函数的功能和作用的基础上的。

  SUBSTR函数:

     俗称截取函数,格式:substr(待截取的字符串,截取的起始位置,截取的结束位置), 返回的结果是截取之后的字符串;

     截取的起始位置:从第0位开始截取的效果和从第1位开始截取的效果是一样的,效果如下:

               

  截取的结束位置:如果不填,默认从截取的起始位置 截取到最后一位;

            

 

INSTR函数:

       俗称查找函数;格式:instr(源字符串, 目标字符串, 查找起始位置, 第几次出现的),查找子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。返回的结果是一个数值;

     查找起始位置为正数,表示从左往右查找,为负数,表示从右往左开始查找;

     以下表示:查找字符a在字符串中从第三个字符开始查找第一次字符a第一次出现;

             

    一般情况下, 【查找起始位置, 第几次出现的】,这个不填,就默认查找的起始位置为1,第一次出现,如下图:

         

   如下图, 当起始位置为负数,表示从右往左第三位开始查找,第三次出现a字符的位置,返回的结果时从右往左的位置;

   

 

 熟悉了substr函数和instr函数的基本知识后,就可以进行复杂的处理;

 例子:如果遇到某个字段的值格式为A-B,那要截取A的数据变成格式为: 姓:A-名:B  这个时候就需要substr函数和instr函数的交叉使用;

分析:   先确定-在字符的位置,使用instr函数,返回所找字符的具体位置,然后利用substr函数去截取,然后使用替换函数;

instr('A-B','-');

获取到A的值:substr('A-B',1,instr('A-B','-')-1); --从第一位开始截取一直到-出现的位置的上一位;

获取到B的值:substr('A-B',instr('A-B','-')+1),--从-出现的位置开始截取,一直截取到最后一位;

然后拼接加上替换函数实现目标:

‘姓:’||substr('A-B',1,instr('A-B','-')-1)||‘名:’||substr('A-B',instr('A-B','-')+1),

 

在学习的过程切不可贪多,贪难,难题都是简单题组合使用,遇到难题就要去分解,最后结果肯定是你平时学的基础知识的应用;

暂时先分享比较基础的,慢慢的晋升的难度更大的,切记:基础不牢,地动山摇!

 

 

  

 

posted @ 2018-09-30 23:18  舟River  阅读(1419)  评论(0编辑  收藏  举报