當開發人員要開發由ORACLE -> SQL SERVER資料庫平台的服務時,
最先遇到的問題是"SQL語法"究竟能不能通用呢?
很多設計師在設計系統時,若常常是BASE ON ORACLE,那麼其程式撰寫的SQL會非常依賴ORACLE,相對的在移轉性上會比較困難。
雖然個人認為ORACLE在函數的運用上有非常多元,速度上可能也比較佔優勢。
但近來SQL SERVER 2008的T-SQL,有許多以前SQL 2000沒有的函數,可以說已經跟ORACLE不相上下了~~。
在此說明這兩者資料庫的函數不同點吧!相同的我就不加以說明,會再繼續補充:
函數與語法 | Oracle | SQL Server 2008 |
字串連結 | || | + |
補位 | LPAD/RPAD | REPLICATE(補位字元,<最大長度n>-len(欄位)) +cast(欄位 as nvarchar) |
型態轉換 | TO_CHAR | CONVERT,CAST |
型態轉換 | TO_NUMBER | CONVERT,CAST |
型態轉換 | TO_DATE | CONVERT(TYPE,COL,Sql server定義格式編號) |
NULL值轉換 | NVL | ISNULL ( check_expression , replacement_value ) |
四捨五入(數) | CEIL | CEILING |
取整數 | TRUNC | CAST( COL AS INT) |
取子字串 | SUBSTR | SUBSTRING |
取長度 | LENGTH | LEN |
取系統日 | SYSDATE | GETDATE() |
時間相減差 | datediff() | Date1-Date2 |
序號 | sequence (.nextval,.currval) | 類似的作法(IDENTIFY,@@IDENTITY,IDENT_CURRENT) 或自行撰寫 |