程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 分析db2與oracle的差別

分析db2與oracle的差別

編輯:DB2教程

分析db2與oracle的差別          開發了一段時間的一個系統一直在db2上使用,終於開發的差不多,測試沒什麼大問題了。突然有一個客戶現場要求用oracle數據庫,剛開始覺得應該沒什麼問題,開發的時候雖然沒在oracle數據庫測試過,但是無非也就是一些SQL的問題,結果用oracle數據庫一發布就傻眼了,我嘞個去竟然沒有一個功能能正常運行,所有的功能進去都是空白頁面,當然報錯的都是SQL,但是這也太超乎我的想象了啊!所以還是記錄下遇到的問題吧,以後寫SQL的時候還是盡量通用,省的以後移植的時候費那麼大勁了。          1、取得系統當前日期。db2為current date 但是這個在oracle中是不適用的,oracle為sysdate。我查找資料都沒有說明db2可不可以用sysdate,但是我的db2  9.7的版本的確可以用sysdate這個函數的。所以就ok了,所有的取得系統當前日期函數都改為sysdate,適用oracle和db2。         2、日期類型字段。對於數據類型為date的字段,在db2中操作的時候不用做任何處理,可以當varchar類型的字段一樣處理。但是oracle就不能這麼干了,在查詢的時候必須用T0_CHAR(CLOMUN,'yyyy-mm-dd'),在update或者insert的時候必須用TO_DATE(CLOMUN,'yyyy-mm-dd')轉為DATE類型。在db2中也可以用to_char和to_date函數。          3、db2中的DECIMAL和oracle中的NUMBER類型。db2中的DECIMAL對應oracle中的NUMBER類型,來定義數字類型和保留幾位有效數字。例如:oracle中定義number(16,2)(四捨五入)  db2中定義decimal(16,2)(會直接截取)。對於DECIMAL類型是不能把空值放進去的,如果為空則默認插入0,而且如果為10.00查詢後是可以直接顯示的,但是number類型就只顯示10所以如果要顯示10.00就需要對其進行格式化。另外number類型中是可以放空值的。            4、SQL的區別。db2和oracle中有一些SQL的區別,這個都是必然的,但是大部分的簡單SQL都還是一樣的,這裡列舉一些吧: 查詢序列 oracle: select T18_ONLINE_TASKFACT_TASKKEY.currval  from dual(當前值)       select T18_ONLINE_TASKFACT_TASKKEY.nextval  from dual(下一個值) db2   select PREVVAL  FOR T18_ONLINE_TASKFACT_TASKKEY from sysibm.sysdummy1  (當前值)              select NEXTVAL FOR T18_ONLINE_TASKFACT_TASKKEY from sysibm.sysdummy1(下一個值)   查詢前10行數據 db2   :      select * from test fetch first 10 rows only oracle:     select * from test where rownum<=10    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved