select length('sdf')from dual --3
SELECT substr('sdf',0,1) FROM dual --s //从第0位开始,取1个字符,就 取s
SELECT substr('sdf',1,1) FROM dual --s //从第1位开始,取1个字符,还是s ??这是为什么oracle里计算字符串是从第1 位开始还是从第0位也可以
SELECT substr('sdf',0,1) FROM dual --s //从第0位开始,取1个字符,就 取s
SELECT substr('sdf',1,1) FROM dual --s //从第1位开始,取1个字符,还是s ??这是为什么oracle里计算字符串是从第1 位开始还是从第0位也可以
--
ab
可以做如下验证:
SQL> select substr('abcdefgkopi',1,3) from dual;SUB
---
abcSQL> select substr('abcdefgkopi',0,3) from dual;SUB
---
abcSQL> select substr('abcdefgkopi',-3,2) from dual;SU
--
opSQL> select substr('abcdefgkopi',-3,5) from dual;SUB
---
opi
不过如数是负数的话表示从后边开始读取
select substr('adcdef',3) from dual 表示从前边读取三位
adc
select substr('adcdef',-3) from dual 表示从后边读取三位
def