Oracle初學者問題8(轉)

Rounders發表於2007-08-06
Oracle初學者問題8(轉)[@more@]


  
  131>.返回引數一年中的第幾天的寫法:
  
  SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
  
  132>.返回午夜和引數中指定的時間值之間的秒數的寫法:
  
  SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;
  
  133>.返回引數中一年的第幾周的寫法:
  
  SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
  
  大家在應用ORACLE的時候可能會遇到很多看起來不難的問題, 特別對新手來說, 今天我簡
  
  單把它總結一下, 釋出給大家, 希望對大家有幫助! 和大家一起探討, 共同進步!
  
  對ORACLE高手來說是不用看的.
  
  虛擬欄位
  
  134. CURRVAL 和 nextval
  
  為表建立序列
  
  CREATE SEQUENCE EMPSEQ ... ;
  
  SELECT empseq.currval FROM DUAL ;
  
  自動插入序列的數值
  
  INSERT INTO emp
  
  VALUES (empseq.nextval, 'LEWIS', 'CLERK',
  
  7902, SYSDATE, 1200, NULL, 20) ;
  
  135. ROWNUM
  
  按設定排序的行的序號
  
  SELECT * FROM emp WHERE ROWNUM < 10 ;
  
  136. ROWID
  
  返回行的實體地址
  
  SELECT ROWID, ename FROM emp WHERE deptno = 20 ;
  
  137. 將N秒轉換為時分秒格式?
  
  et serverout on
  
  declare
  
  N number := 1000000;
  
  ret varchar2(100);
  
  egin
  
  ret := trunc(n/3600) || '小時' || to_char(to_date(mod(n,3600),'sssss'),'fmmi"分
  
  "ss"秒"') ;
  
  dbms_output.put_line(ret);
  
  end;
  
  138. 如何查詢做比較大的排序的程式?
  
  SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,
  
  a.username, a.osuser, a.status
  
  FROM v$session a,v$sort_usage b
  
  WHERE a.saddr = b.session_addr
  
  ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks ;
  
  139. 如何查詢做比較大的排序的程式的SQL語句?
  
  elect /*+ ORDERED */ sql_text from v$sqltext a
  
  where a.hash_value = (
  
  elect sql_hash_value from v$session b
  
  where b.sid = &sid and b.serial# = &serial)
  
  order by piece asc ;
  
  140. 如何查詢重複記錄?
  
  SELECT * FROM TABLE_NAME
  
  WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
  
  WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9417382/viewspace-932309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章