亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

從Oracle遷移到SQL Server的陷阱

添加時間:2013-1-11 21:48:12  添加: 思海網絡 
 在把Oracle查詢轉換為SQL Server的時候要特別當心一些不容易注意到的問題。我們知道,T-SQL是SQL Server的語言引擎,而Oracle的語言引擎卻是PLSQL。這兩種查詢語言都對ANSI SQL-92標準進行了擴展以提供額外的支持力度。你所創建的應用程序幾乎都要用到這些補充特性。本文就對最常用的、非標準的Oracle擴展進行了說明,同時還要介紹下如何對這些擴展進行轉化以用在SQL Server環境下。

  列的選擇

  用PLSQL執行數據查詢的時候,FROM子句是必須的,這同SQL Server的要求是一樣的。 SELECT語句必須選擇針對的數據表。在Oracle數據庫內有一種特殊的表DUAL。DUAL表由Oracle連同數據字典一同創建,所有的用戶都可以用名稱DUAL訪問該表。這個表里只有一列DUMMY,該列定義為VARCHAR2(1)類型,有一行值X。

  從DUAL表選擇數據常被用來通過SELECT語句計算常數表達式,由于DUAL只有一行數據,所以常數只返回一次。

  Oracle下的DUAL查詢如下所示:


  SELECT ‘x’ FROM dual

  而對等的SQL Server查詢則是下面這個樣子:
  SELECT ‘x’

  連接

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

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

  對應的SQL Server查詢如下所示:
  Select ‘Name’ + ‘Last Name’
  數字取舍

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

  在SQL Server下可以用Round或者Floor。

  以下是Oracle查詢:
  SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;

  下面是同類查詢的SQL Server版本:
  SELECT ROUND(15.79, 0) rounded , ROUND(15.79, 0,1) truncated
  SELECT FLOOR(ROUND(15.79, 0)), FLOOR(ROUND(15.79, 0,1) )

  數字轉換

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

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

  Oracle查詢如下:
  SELECT to_char(123.45 ,99999999999999) from tab
  SELECT to_char(EXPIRY_DATE,'DDMONYYYY') from tab

  以下是SQL Server版本的查詢:
  SELECT STR(123.45, 14)
  SELECT STR(round(123.455 , 2),12,2)
  SELECT CAST(REPLACE((CONVERT(varchar(12) , EXPIRYDATE, 106 )),' ' , '') as varchar(9))

  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,12) from dual

  SQL Server則是如下完成同等功能的:
  Select dateadd(mm,12,getdate())

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

  SQL Server則是這樣做的:
  SELECT datediff(dd, GetDate(),dateadd(mm,12,getdate()))

關鍵字:Oracle、SQL Server、數據庫

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站