1、截取字符串substr和检索字符串位置instr的使用

1、截取字符串(substr)   
substr(string,start_position,length) 求子字符串,返回字符串
注释:
string 源字符串
start_position 开始位置(从0开始)
length 可选项,子字符串的个数

select substr('ACDE',2) from dual;  --返回从第二个字符开始之后的所有字符,返回值:CDE
select substr('ABCDEFG',2,4) from dual; --返回从第二个字符开始,后面的4个字符,返回值:BCDE
select substr('ABCDEFG',-3) from dual; --参数为负数表示从尾部开始算起,字符串排列位置不变,返回值:EFG
select substr('ABCDEFG',-5,2) from dual;  --返回值:CD

2、检索字符串位置(instr)
instr(string,substr,position,ocurrence) 查找字符串的位置
注释:
string : 源字符串
substr : 要查找的子字符串
position : 查找的开始位置
ocurrence : 源字符串中第几次出现的子字符串

select instr('ABC:DEF:HGK',':',1,1) from dual;  -- 返回第一个:所在的位置,返回值:4
select instr('ABC:DEF:HGK',':',1,2) from dual;  -- 返回第一个:所在的位置,返回值:8

3、substr和instr联合使用
select substr('ABC:DEF:HGK',instr('ABC:DEF:HGK',':',1,1)+1,instr('ABC:DEF:HGK',':',1,2)-instr('ABC:DEF:HGK',':',1,1)-1) from dual;  --返回2个冒号之间的值,返回值:DEF
4、replace 字符串替换
select replace(str,str1,str2) from dual;  
str : 源字符串
str1 : 要替换的字符串
str2 : 替换后的字符串

5、字符串转数字
select to_number('1111') from dual;

  

6、Oracle时间戳函数获取到秒
SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400 FROM DUAL;

7、Oracle时间戳函数获取到毫秒
SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400000 + TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) AS MILLIONS FROM DUAL;

  

  

posted on 2018-01-03 22:40  hello策  阅读(183)  评论(0编辑  收藏  举报