發表文章

目前顯示的是有「Oracle」標籤的文章

Flashback Query

感謝我的好友提供的: 在Oracle好用的指令... Flashback Query: 讓異動過的資料表回到歷史時間點 Step 1. è show parameter undo_retention  PS: 這個參數顯示系統上設定歷史保留時間(ex: 900 = 900秒) Step 2. è CREATE TABLE  XXXXX _0815 AS SELECT *  FROM  XXXXX   AS OF TIMESTAMP TO_TIMESTAMP ( '2011-08-15 12:00:00' , 'YYYY-MM-DD HH24:MI:SS' ); PS: 透過as of timestamp方式取出該時間點的表格資料

Oracle LISTAGG

同事介紹的一個Oracle的好用查詢:LISTAGG SELECT A.GROUP_ID, A.KEY, LISTAGG (A.VALUE, '; ' ) WITHIN GROUP (ORDER BY A.VALUE) as GG  from SYS_PROPERTIES a   GROUP by A.GROUP_ID, A.KEY LISTAGG可以將group後的結果會總顯示於一個欄位 上述SQL原本A.VALUE會是一個row一個row的排列 使用LISTAGG之後,可以將A.VALUE顯示在同一個row中 並且可以指定間隔符號(在此設定為';') 針對某一些報表查詢非常有用唷 :D

Oracle Extract DDL of a Table

對於寫script備份資料庫資訊很有用唷~ select DBMS_METADATA.GET_DDL('TABLE','TABLE_NAME') from DUAL
Oracle的byte與中文字換算 FOR UTF8: 英文字 1 byte 常用中文字 3 bytes 非常用中文字 6 bytes FOR UTF16: 英文字 2 bytes 常用中文字 2 bytes 非常用中文字 4 bytes

Oracle Reflash Snapshot

Oracle中執行Snapshot的語法: exec dbms_snapshot.refresh('SNAPSHOT_NAME','F');

Replace & Translate Functions

REPLACE(expr, from_string, to_string) ... 將會置換"整個"from_string到"整個"to_string select replace('a1234bcd','123','xxx') from dual; result: axxx4bcd TRANSLATE(expr, from_string, to_string) ....將會置換from_string中字元到to_string中字元 select translate('a12bc34bcd','123','xxx') from dual; result: axxbcx4bcd

Oracle VARCHAR2中文字byte使用

一次在存取大量文字的功能裡面,突然對Oracle的VARCHAR2欄位byte跟中文字數對應有一些疑惑 發現,在Oracle中有一些特別的限制,下面是爬到的文章,參考一下 : 英文字 1 byte 常用中文字 3 bytes 非常用中文字 6 bytes 如果你的資料大都是用英文, 少量中文, UTF8 是很好的選擇 如果是大量中文, UTF16 會比較省空間. UTF16: 英文字 2 bytes 常用中文字 2 bytes 非常用中文字 4 bytes 資料來源: http://www.programmer-club.com.tw/ShowSameTitleN/oracle/2362.html