substr函式在oracle中使用表示被截取的字元串或字元串表达式。和instr()函式不同,instr()函式是要截取的字元串在源字元串中的“位置”,substr()函式是截取字元串的“内容”。
基本介绍
- 中文名:字元串截取函式
- 外文名:substr
- 函式定义:从第m个字元开始截取
- 函式语法:指定的要截取的字元串
- 注意事项:末位参数可省略
函式定义
substr(strings|express,m,[n])
运行结果截图

strings|express :被截取的字元串或字元串表达式
m 从第m个字元开始截取
n 截取后字元串长度为n
函式语法
substr(string,start,length)
参数 | 必须 | 参数说明 |
string | 必须 | 指定的要截取的字元串 |
start | 必须 | 规定在字元串的何处开始: 正数 - 在字元串的指定位置开始 负数 - 在从字元串结尾的指定位置开始 0 - 在字元串中的第一个字元处开始 |
length | 可选 | 指定要截取的字元串长度,预设时返回字元表达式的值结束前的全部字元 |
例如:
select substr('abcdefg',3,4) from dual;结果是cdef
select substr('abcdefg',-3,4) from dual;结果efg
select substr('abcde',2),substr('abcde',-2),substr('abcde',2,3),substr('abcdewww',-7,3) from dual;
结果是bcde、de、bcd、bcd
注意事项
1、函式参数start或length任意值为空,那幺结果为空
eg:
SQL> select substr('abcde',1,null) from dual;
SUBSTR('ABCDE',1,NULL)
----------------------
SQL> select substr('abcde',null,null) from dual;
SUBSTR('ABCDE',NULL,NULL)
-------------------------
SQL> select substr('abcde',null,1) from dual;
SUBSTR('ABCDE',NULL,1)