Oracle與SQL Server中SQL語句的使用區別


搜尋網上信息找到SQL Server使用時與Oracle的具體區別分類如下:

 

一、數據類型比較

 類型名稱

Oracle

 SQLServer

 比較

 字符數據類型  CHAR  CHAR  都是固定長度字符資料但oracle里面最大度為2kb,SQLServer里面最大長度為8kb
 變長字符數據類型  VARCHAR2  VARCHAR  Oracle里面最大長度為4kb,SQLServer里面最大長度為8kb
 根據字符集而定的固定長度字符串  NCHAR  NCHAR  前者最大長度2kb后者最大長度4kb
 根據字符集而定的可變長度字符串  NVARCHAR2  NVARCHAR  二者最大長度都為4kb
 日期和時間數據類型  DATE  有Datetime和Smalldatetime兩種  在oracle里面格式為DMY在SQLSerser里面可以調節,默認的為MDY
 數字類型  NUMBER(P,S)  NUMERIC[P(,S)]  Oracle里面p代表小數點左面的位數,s代表小數點右面的位數。而SQLServer里面p代表小數點左右兩面的位數之和,s代表小數點右面的位數。
 數字類型  DECIMAL(P,S)  DECIMAL[P(,S)]  Oracle里面p代表小數點左面的位數,s代表小數點右面的位數。而SQLServer里面p代表小數點左右兩面的位數之和,s代表小數點右面的位數。 
 整數類型  INTEGER  INT  同為整數類型,存儲大小都為4個字節
 浮點數類型  FLOAT  FLOAT  
 實數類型  REAL  REAL  

 

二、普通函數比較

函數
ORACLE
SQLServer
比較
數學函數 ABS ABS 兩者都是取絕對值函數格式都為abs(numeric_expression)
ASIN,ACOS,ATAN ASIN,ACOS,ATIN 用於計算反正弦,反余弦,反正切的值。參數為float類型的表達式,取值-1~1.
SIN,COS,TAN SIN,COS,TAN 用於計算正弦,余弦,正切的值。參數為float類型的表達式.
CEIL CELING 用於計算大於或等於指定值的最小整數,格式:~(numeric_expression)
  DEGREES 用於弧度對角度的轉變,而RADIANS用於角度到弧度的轉變,這兩個函數都是SQLServer特有的。
EXP EXP 給定資料的指數值
FLOOR FLOOR 用於計算小於或等於、給定值的最大整數。
LOG LOG 用語求指定函數的自然對數,在SQLServer里面還有LOG10這個函數,用於求以10為底的對數值
POWER POWER 用於求指定表達式的給定次方,POWER(M,N)表示M的N次方。
ROUND ROUND 用於把表達式圓整到指定長度,在oracle里面還分數據型和日期型。兩種
SIGN SIGN  
SQRT SQRT 用於求給定式子的平方根
字符串函數 || + 用於把兩個或多個字符數據或列連接起來。Oracle里用||,SQLServer里用+。
ASCII ASCII 用於求最左端字符的ASCII值。
TO_CHAR CHAR 都是數據類型轉換標識,前者主要是將日期、時間或數轉換為文本。后者主要是將整形的ASCII數,轉換成相對應的字符
  CHARINDEX 返回指定樣式的起始位置
  DIFFERENCE  
LOWER LOWER 轉換成小寫字母。
LTRIM LTRIM 刪除資料前面的空格,也就是左刪除,還有與之對應的RTRIM,為右刪除
SOUNDEX SOUNDEX 返回由4個字符組成的代碼,以平估兩個字符的相似性。
SUBSTR/SUBSTRB SUBSTRING 格式為~(string,a,b),返回以a位置開始的有b個字符長的string的一部分,oracle里面還有substrb函數,功能相同但是他里面的a,b是以字節為單位而不是以字符為單位。
UPPER UPPER 以大寫形式返回string。
日期時間函數 SYSDATE GETDATE 返回當前的時間日期。
NEXT_DAY DATEADD 前者格式為NEXT_DAY(d,stirng)表示返回在日期d之后滿足string給出條件的第一天。DATEADD格式為DATEADD(d,num,date)表示返回在日期d天之后加上num天后的日期,date表示返回的類型。
系統函數   COL_NAME 返回列名
VSIZE COL_LENGTH 返回列的長度
  DATELENGTH 返回任意數據類型表達式的實際長度,二者功能相近。

 

三、特殊規則比較

ORACLE
SQL SERVER
CURRVAL, NEXTVAL Use the identity column type, and @@identity global variable, IDENT_SEED() and IDENT_INCR() functions.
SYSDATE GETDATE()
ROWID Use the identity column type
USER USER
LIKE模糊查詢%,_ , ^ LIKE模糊查詢%,_ , ^

 

四、操作符比較

Operator Oracle Microsoft SQL Server
Equal to (=) Same
Greater than (>) Same
Less than (<) Same
Greater than or equal to (>=) Same
Less than or equal to (<=) Same
Not equal to (!=, <>,^=) Same
Not greater than, not less than N/A !> , !<
In any member in set IN Same
Not in any member in set NOT IN Same
Any value in set ANY, SOME Same
Referring to all values in set. != ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL Same
Like pattern LIKE Same
Not like pattern NOT LIKE Same
Value between x and y BETWEEN x AND y Same
Value not between NOT BETWEEN Same
Value exists EXISTS Same
Value does not exist NOT EXISTS Same
Value {is | is not} NULL IS NULL, IS NOT NULL Same. Also supports = NULL, != NULL for backward compatibility (not recommended).

 

五、ORACLE 與SQL SERVER間的轉換。

   如需在Oracle 數據庫與Sql Server 數據庫之間進行轉換需要做好以下工作:

  1)保證所有的 SELECT, INSERT, UPDATE, and DELETE 語句的語法是正確的,如果有什么不同需要做一定的更改。
  2)改變所有ORACLE中的 outer joins 為SQL SERVER支持的 SQL-92 standard outer join 標准。
  3)將Oracle functions 與SQL Server functions 進行轉換。
  4)檢查所有的操作符.。
  5)將ORACLE的“||” 字串連接操作符轉換為SQL SERVER的 “+”字串連接操作符。
  6)將ORACLE的 PL/SQL 程序轉換為SQL SERVER的TransactSQL 程序。
  7)修改所有的ORACLE的 PL/SQL 游標為沒有游標的SELECT 語句或者是SQL SERVER的 TransactSQL 游標。
  8)將ORACLE的PL/SQL procedures, functions, and packages 與SQL SERVER的TransactSQL procedures進行轉換。

  9)將ORACLE的 PL/SQL triggers與SQL SERVER的TransactSQL triggers進行轉換。
  10)用 SET SHOWPLAN 語句來調整你的查詢的性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM