草蛋的小青年

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
1. substr(字符串,截取开始位置,截取长度) //返回截取的字
 eg:select  substr('Hello World',-3,3) from dual;    ----->rld
2.to_date(date,'格式');     //返回日期类型
eg:  select to_date('2005-01-01 ','yyyy-MM-dd') from dual;   ------>2005-01-01 00:00:00
3.instr(sourceString,destString,start,appearPosition) 查找到的字符串的位置
    instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
    start代表查找的开始位置,这个参数可选的,默认为1,如果start的值为负数,则代表从右往左进行查找
    appearPosition代表想从源字符中查找出第几次出现的destString,这个参数也是可选的, 默认为1
4.TRIM() 函数
      trim只能去除单个字符,TRIM去除指定字符的前后空格
SELECT TRIM(leading|trailing|both string1 FROM string2) FROM dual;
--表示字符串string2去除前面|后面|前后面(leading|trailing|both)的字符string1,默认去除方式为both
      LTRIM去掉左边空格,RTRIM,去掉右边空格或字符串   
5.decode(表达式,条件一,返回一,条件二,返回二,...,default) 函数
     表达式满足哪个条件,就返回哪个结果,都不满足时,返回default
6.索引
      常用来  对于查询条件 较多的表   不适合更新操作较多的表 因为 跟新表的同时也需要更新索
 --创建唯一的索引  create unique index index_name on table_name(column_name);
7.游标
     游标原理: 逐行处理查询结果,以编程的方式访问数据。用游标提取一行数据 保存在游标中,一次处理一行
declare --声明游标
  CURSOR C_PCINFO IS
    SELECT
      TO_CHAR(SUBSTR(f.forminfo, instr(f.FORMINFO,'<date>',1)+6, (instr(f.FORMINFO,'</date>',1) -instr(f.FORMINFO,'<date>',1))-6)) AS DATESTR,
 
      TO_CHAR(SUBSTR(f.forminfo, instr(f.FORMINFO,'<areaCode>',1)+10, (instr(f.FORMINFO,'</areaCode>',1) - instr(f.FORMINFO,'<areaCode>',1))-10)) AS AREACODE ,
 
      f.PROCESSID AS PID
    FROM
      BPMUSER2.FORM_MASTER_INFO f
    WHERE
      f.FORMID='GL_PC' AND f.CREATETIME BETWEEN SYSDATE-365 AND SYSDATE+1;
    C_ROW C_PCINFO%ROWTYPE; --声明变量类型为行类型
    c_count number:=0;
  BEGIN
    FOR C_ROW IN C_PCINFO LOOP --打开游标 并开始循环
      IF C_ROW.DATESTR IS NOT NULL
        AND C_ROW.AREACODE IS NOT NULL
          AND C_ROW.PID IS NOT NULL
      THEN
        INSERT INTO BPMUSER2.PC_DATE_INFO(ID,PROCESSID,USERDATE,SCOPEID) VALUES(SEQ_PC_DATE_INFO.nextval,C_ROW.PID,to_date(C_ROW.DATESTR,'yyyy-mm-dd'),C_ROW.AREACODE);
 
        c_count:=c_count+1;
        if c_count>1000 then  --每次提交100条
          commit;
          c_count:=0;
        end if;
      END IF;
    END LOOP;
    COMMIT;
  END;
8.序列:
    常用来做自增主键取值用:(SEQ_PC_DATE_INFO .nextval)
CREATE SEQUENCE  "BPMUSER"."SEQ_PC_DATE_INFO"  MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 60074 NOCACHE  NOORDER  NOCYCLE

9.时间函数

select trunc(sysdate) from dual -- 返回当天零点 2017-11-27 00:00:00

  

 
     
posted on 2017-10-26 11:54  草蛋的小青年  阅读(254)  评论(0编辑  收藏  举报