oracle – sql中很有用小知識點

來源:互聯網
上載者:User

     在Oracle中,只有DML才會開啟一個事務。也就是說Insert,Update,Delete這些都會開啟一個事務,並且該事務在commit/rollback/ddl命令時會自動結束。

1.擷取特定資料的前幾位

select substr(recordid,1,2) from syscode where rownum < 5;


2.擷取指定條數的資料

select recordid from syscode where rownum < 5;

3.擷取指定格式的ID
  function getsmssendid return varchar2 is
    v_getsmssendid smssend.smssendid%type;
  begin
    select 'SMSSEND' || lpad(seq_smssend.nextval, 13, '0')
      into v_getsmssendid
      from dual;
    return v_getsmssendid;
  end;

 類似這樣的效果: SMSSEND0000000000001

 

4.去掉資料裡的tab鍵

update temp_lj set ac10 = replace(ac10,chr(9),'');
  commit;

 

5.更新,修改表中資料

select a.*,rowid from a

select a.* from a for update

以上兩種都可以修改資料,但是第二種會鎖表

 

6.控制查詢匯出的數量個數

View Code

 1 --function中的部分代碼 2 v_num     smallint default 10;--查詢就只能查詢10條 3 begin 4     if p_type = 'B' then--即匯出,就可以查出所有 5       v_num := 0; 6     end if; 7     v_NT_test := NEW nt_test(); 8    9     for c_ag in (select a.agentid,10                         a.recommendagentid,11                         getagentstatus(a.agentstatus) agentstatus,12                         a.agentcode,13                         a.agentname,14                         A.agentlevelcode,15                         a.hiredate,16                         a.casemainid17                    from agenthis a18                   where a.bizyearmonth = p_month19                     and a.agentstatus = 'AGENTSTATUS_09'20                     and a.branchid = p_branchid21                     and (a.agentcode = p_agentcode or p_agentcode is null)22                     and (rownum <= v_num or v_num = 0)23                  24                  ) loop

 

7.資料匯入到excel時,長數字會出現科學計演算法(即省略部分數字不顯示)

excel中出現科學計演算法的那一列,將那列選中,滑鼠右擊選中設定儲存格樣式,將常規改成文本就OK了

 

8.日期

select to_char(sysdate, 'YYYY' ) || '年' ||
       
         to_char(sysdate, 'MM' ) || '月' ||
       
         to_char(sysdate, 'DD' ) || '日' 日期
       
         from dual 

 

9.查詢出資料,丟失了小數點前面的0,例如本來應該是0.0508,查出卻是 .0508

select  to_char('.0508','fm90.0000')  from dual; 可解決

結果:0.0508 (說明:.0508就是表中的一列數,在資料庫存的時候就是這樣的)

fm9999999900.99,表示整數部分最多10位,00表示小數點前面有兩個0,小數部分最多2位(並且會自動四捨五入),fm表示去掉轉位字串後前面的空格,不加fm,0.0508前面會有空格。

 

3.擷取指定格式的ID
  function getsmssendid return varchar2 is
    v_getsmssendid smssend.smssendid%type;
  begin
    select 'SMSSEND' || lpad(seq_smssend.nextval, 13, '0')
      into v_getsmssendid
      from dual;
    return v_getsmssendid;
  end;

 類似這樣的效果: SMSSEND0000000000001

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.