我一直觉得一个技术大牛,都是能够很好的应用基础知识,基础知识不牢,会造成我们在实际应用中会感到困惑,进而影响到我们更好的发挥,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),
在学习的过程切不可贪多,贪难,难题都是简单题组合使用,遇到难题就要去分解,最后结果肯定是你平时学的基础知识的应用;
暂时先分享比较基础的,慢慢的晋升的难度更大的,切记:基础不牢,地动山摇!