The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

Oracle 開發筆記

Oracle 物件的命名限制

任何物件的名稱不得超過 30 位元(Bytes)

Oracle 的 dummy query 寫法

SELECT SYSDATE FROM dual

Oracle 選取部分資料的方法

SELECT * FROM table WHERE ROWNUM<10; /* 取出前 10 筆 */

實現 Oracle 上的分頁顯示 [精華]

Oracle 轉換成數值的方法

to_number('<string>')

to_number(null)  => 0

Oracle 日期欄位轉字串的方法

TO_CHAR(<date>, '<format>')

http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

範例:
SELECT TO_CHAR(b, 'YYYY/MM/DD') AS b FROM x;

Oracle 字串轉日期欄位的方法 ( Oracle 寫入日期的方法 )

TO_DATE(<string>, '<format>')

範例:
TO_DATE('2006/8/29', 'YYYY/MM/DD')

Oracle 取得目前時間的作法

SYSDATE

Oracle 針對日期操作的方法

比對 DATE 欄位時,可以使用標準的數值比對運算元,例如:=, !=, >, 等等。

你可以針對 DATE 欄位直接所相減的動作,結果會回傳 FLOAT 格式,其數值是兩個日期的天數。一般來說,相減後的數值結果會有小數點,因為 DATE 欄位格式包含「時間」的成分。因此,兩個日期欄位的「相加」、「相乘」、「相除」都是不允許的!

但是,日期(DATE)欄位可以跟「數值」欄位「相加」或「相減」,其「數���」所代表的意義是「相差的天數」,所以 SYSDATE + 1 的意思就是「明天」的意思。但日期欄位不能跟數值欄位「相乘」或「相除」。

日期欄位可以透過 TO_CHAR 函數的轉換變成「純字串」,這樣一來就可以用「字串函數」比對日期的格式了。例如:to_char(<date>, 'DD-MON-YY') like '%JUN%' 就可以比對出該日期是否在「六月(JUN)」。

2009-10-14 更新:這裡有一篇完整的日期操作文章: Oracle時間日期操作

建立 TRIGGER 指令注意事項

SQL 語法的最後面一定要加上分號(;)結尾

ASP 開發注意事項

 透過 ASP 執行 SQL 不能有「分號 ( ; )」結尾

取出所有 Oracle 的 Data Dictionary

SELECT * FROM DICTIONARY

Select * From dictionary Where TABLE_NAME LIKE 'ALL_%'
Select * From dictionary Where TABLE_NAME LIKE 'DBA_%'
Select * From dictionary Where TABLE_NAME LIKE 'USER_%'

取出所有表格的欄位定義 ( Columns of user's tables, views and clusters )

SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME LIKE '%FORUM%'

SELECT * FROM USER_TAB_COLUMNS

取得所有 SEQUENCE

select * from USER_SEQUENCES

取得所有 VIEWS

select * from USER_VIEWS

取得所有 INDEXES

SELECT * FROM USER_INDEXES