1. 程式人生 > >常用SQL方法

常用SQL方法

instr orm 更新 bpm 每次 next star 返回日期 trim

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

  

常用SQL方法