熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

淺析Oracle和SQLServer

2013-11-13 15:45:18  來源: Oracle 

  TSQL是SQL Server的語言引擎而Oracle的語言引擎卻是PLSQL這兩種查詢語言都對ANSI SQL標准進行了擴展以提供額外的支持力度你所創建的應用程序幾乎都要用到這些補充特性本文就對最常用的非標准的Oracle擴展進行了說明同時還要介紹下如何對這些擴展進行轉化以用在SQL Server環境下

  列的選擇

  用PLSQL執行數據查詢的時候FROM子句是必須的這同SQL Server的要求是一樣的 SELECT語句必須選擇針對的數據表在Oracle數據庫內有一種特殊的表DualDual表是Oracle中的一個實際存在的表任何用戶均可讀取常用在沒有目標表的Select中Dual表由Oracle連同數據字典一同創建所有的用戶都可以用名稱DUAL訪問該表這個表裡只有一列DUMMY該列定義為VARCHAR()類型有一行值X從DUAL表選擇數據常被用來通過SELECT語句計算常數表達式由於DUAL只有一行數據所以常數只返回一次

  Oracle下的DUAL查詢如下所示
SELECT x FROM dual
而對等的SQL Server查詢則是下面這個樣子
SELECT x

  以下是null相關的知識用到了dual
SQL> select from dual where null=null;
沒有查到記錄
SQL> select from dual where null=;
沒有查到記錄
SQL> select from dual where =;
沒有查到記錄
SQL> select from dual where null is null;



SQL> select from dual where nvl(null)=nvl(null);



查看當前連接用戶
SQL> select user from dual;

  查看當前日期時間
SQL> select sysdate from dual;

  連接

  Oracle用|| 符號作為連接符而SQL Server的連接符是加號+

  Oracle查詢如下所示
Select Name || Last Name From tableName

  對應的SQL Server查詢如下所示
Select Name + Last Name

  數字取捨

  Oracle數據庫內有一個TRUNC函數該函數返回m位十進制數的n位如果省略m則n就是m的值可以為負表示截去小數點左邊m位數字

  在SQL Server下可以用Round或者Floor

  以下是Oracle查詢
SELECT TRUNC() Truncate FROM DUAL;

  下面是同類查詢的SQL Server版本
SELECT ROUND( ) rounded ROUND( ) truncated
SELECT FLOOR(ROUND( )) FLOOR(ROUND( ) )

  數字轉換

  Oracle的TO_CHAR函數可以把n位NUMBER數據類型轉換為VARCHAR 數據類型同時采用可選的數字格式

  SQL Server則通過STR函數返回數字轉換之後的字符數據不過該函數不具方便的Format參數

  Oracle查詢如下
SELECT to_char( ) from tab
SELECT to_char(EXPIRY_DATEDDMONYYYY) from tab

  以下是SQL Server版本的查詢
SELECT STR( )
SELECT STR(round( ))
SELECT CAST(REPLACE((CONVERT(varchar() EXPIRYDATE )) ) as varchar())

  LENGTH和LEN

  以下是Oracle的查詢
SELECT LENGTH(SQLMAG) Length in characters FROM DUAL;

  以上查詢在SQL Server下是這樣寫的
SELECT LEN(SQLMAG) Length in characters

  日期

  以上兩種系統都具有各自的當前日期和時間格式

  Oracle取得日期和采用如下方式
SYSDATE

  SQL Server則是這樣的
GETDATE()

  你可以用各種語法操作日期以下的代碼對Oracle日期值中的月份進行了格式調整(返回日期再加上n月)
Select add_months(sysdate) from dual

  SQL Server則是如下完成同等功能的
Select dateadd(mmgetdate())

  數據的減法也不同以下代碼在Oracle中直接對數據進行減法操作
SELECT sysdate add_months(sysdate) FROM dual

  SQL Server則是這樣做的
SELECT datediff(dd GetDate()dateadd(mmgetdate()))


From:http://tw.wingwit.com/Article/program/Oracle/201311/17257.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.