oracle常用函数积累

--oracle常用函数积累--
--1、字符串长度:LENGTH ,语法: CONCAT(string)
    --示例
    select LENGTH('AA_BB') from dual;--结果:5
--2、字符串连接:CONCAT,语法: CONCAT(string1,string2)
    --示例
    select CONCAT('AA','_BB') from dual;--结果:AA_BB
    --简单点,用双竖线即可
    select 'AA'||'''-'''||'BB' from dual;--结果:AA'-'BB,单引号要用''转义
--3、字符串替换:REPLACE,语法:REPLACE(string,search_str[,replace_str]);
    --示例
    select REPLACE('AA_BB','BB','CC') from dual;--结果:AA_CC
    select REPLACE('AA_BBBB','BB') from dual;--结果:AA_
--4、字符串截取:SUBSTR,语法: SUBSTR(string,start_position,[length]),string 源字符串,start_position开始位置(从0开始), length 可选项,截取的个数
    --示例
    select SUBSTR('AA_BB',0,2) from dual;--结果:AA
    select SUBSTR('AA_BB',0) from dual;--结果:AA_BB
--5、字符串查询:INSTR(string,subString,start_position,count),string:源字符串,subString:要查找的子字符串,start_position:查找的开始位置(从1开始),count:源字符串中第几次出现的子字符串
    --示例
    select INSTR('AA_BB_BB','A',1,1) from dual;--结果:1 
    select INSTR('AA_BB_BB','A',1,2) from dual;--结果:2  
    select INSTR('AA_BB_BB','BB',1,2) from dual;--结果:7 
--6、一列结果拼接成一个字符串listagg,语法: listagg(column,str) within group(order by column),column要查找的表字段,str连接字符串
    --示例
    --3.1、查询table4表的c_id数据
    select c_id from table4;
    --结果为:
    --C_ID
    --0BC86FE5-BCF3-45C2-95C1-C8328D5849FD
    --39430D20-13BB-4EEB-A300-82F6AC7551CB
    --97876BB9-F366-4694-BFD6-71C3ACBD5995
    --9C085EE3-399E-4773-8A91-8D745E1713A6
    --3.2、使用函数listagg(oracle版本11g或更高)
     select listagg(c_id,',') within group(order by c_id) as res
          from table4;
     --结果为:
     --RES
     --0BC86FE5-BCF3-45C2-95C1-C8328D5849FD,39430D20-13BB-4EEB-A300-82F6AC7551CB,97876BB9-F366-4694-BFD6-71C3ACBD5995,9C085EE3-399E-4773-8A91-8D745E1713A6
--7、使用to_char、to_date、to_timestamp,时间加减等
    --示例
    select to_char(sysdate,'yyyy') from dual;--结果:2017
    select to_char(sysdate,'mm') from dual;--结果:08
    select to_char(sysdate,'dd') from dual;--结果:25
    select to_char(sysdate,'yyyy-mm-dd') from dual;--结果:2017-08-25
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--结果:2017-08-25 17:01:22
    select to_date('2017-08-25 17:01:22','yyyy-mm-dd hh24:mi:ss') from dual; --结果:25-8月 -17
    select to_timestamp('2017-08-22 09:26:15:821000', 'YYYY-MM-DD HH24:MI:SS:FF6') from dual; --结果:22-8月 -17 09.26.15.821000000 上午
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate - interval '10' MINUTE,'yyyy-mm-dd hh24:mi:ss') from dual;--结果:2017-08-25 17:05:41     2017-08-25 16:55:41 减去10分钟
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate + interval '10' MINUTE,'yyyy-mm-dd hh24:mi:ss') from dual;--结果:2017-08-25 17:06:44    2017-08-25 17:16:44 加上10分钟
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate - interval '10' HOUR,'yyyy-mm-dd hh24:mi:ss') from dual;--减去10小时
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate + interval '10' HOUR,'yyyy-mm-dd hh24:mi:ss') from dual;--加上10小时
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate - interval '10' MONTH,'yyyy-mm-dd hh24:mi:ss') from dual;--减去10月
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate + interval '10' MONTH,'yyyy-mm-dd hh24:mi:ss') from dual;--加上10月
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate - interval '10' YEAR,'yyyy-mm-dd hh24:mi:ss') from dual;--减去10年
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate + interval '10' YEAR,'yyyy-mm-dd hh24:mi:ss') from dual;--加上10年
    select to_char(sysdate-1,'yyyy-mm-dd') from dual;--结果:2017-08-24,减去一天
    select to_char(sysdate+1,'yyyy-mm-dd') from dual;--结果:2017-08-26,加去一天
--8、空判断:nvl,语法:nvl(column,str),column被判断字符,如果为null,则替换为str
    --示例
    select nvl(null,'') from dual;--结果:无
--9、条件判断:case when then else end ,CASE search_expression WHEN expression1 THEN result1 WHEN expressionN THEN resultN ELSE default_result
    --示例
    select case when 'a'='a' then '' when 'a'='b' then '' else '合格' end 
    from dual;--结果:优
--10截取clob部分数据

  dbms_lob.substr(column,4000)


原文地址:https://www.cnblogs.com/xmqa/p/7429004.html