为什么oracle的内置函数中没有leftstr,rightstr之类的字符串函数

使用ORACLE的人应该都用过oracle中的substr函数,函数作用就不说了。
substr函数是一个功能比较强大的函数,有比较多的用法,本文将详细说明。

以下是函数调用原型
substr(string,postion[,substring_length])
string:原字符串,没什么好讲的,就是要检索的原字符串
postion:开始检索的位置,
    如果大于0则表示从第一个字符开始向后算
    如果小于0则表示从最后一个字符开始向前算,如果向前时小于原字符串的长度则表达式返回空
    如果等于0则认为是从第一个字符串开始
    如果有小数则把小数舍去

substring_length:检索的字符串长度
    如果大于0则表示返回的字符数,如果计算后原字符串的字符数小于substring_length,则返回到最后的字符串
    如果小于等于0则返回空
    如果有小数则把小数舍去
    如果没有这个参数则表示取到最后
以下是substr使用的各种示例
取左边的3个字符
substr('ABCDEFG',1,3)='ABC'
取从第3个字符开始的2个字符
substr('ABCDEFG',3,2)='CD'
取右边的3个字符
substr('ABCDEFG',-3)='EFG'
取从第6个字符开始到最后的字符串
substr('ABCDEFG',6)='FG'
取倒数第5个字符开始的2个字符
substr('ABCDEFG',-5,2)='CD'

如果向前时小于原字符串的长度则表达式返回空
substr('ABCDEFG',-8,7)=''

小数舍去
substr('ABCDEFG',2.6,2.2)='BC'

备注:
substr是按字符来计算,一个字母或汉字都按一个字符计算如:
substr('智能ABC',2,2)='能A'
如果想要按字节来计算则可以采用substrb函数,用法一样
substrb('智能ABC',3,4)='能AB'
当然还有另外几个按不同编码计算的函数
substrc:按Unicode编码,
substr2:按UCS2编码,
substr4:按UCS4编码。