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

最近開始接觸Oracle,想要了解下同SQL Server使用時的區別。搜尋網上信息找到具體區別分類以下:數據庫

 

1、數據類型比較express

 類型名稱oracle

Oracleless

 SQLServeride

 比較函數

 字符數據類型  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  

 

2、普通函數比較性能

函數
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 返回任意數據類型表達式的實際長度,兩者功能相近。

 

3、特殊規則比較spa

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模糊查詢%,_ , ^

 

4、操做符比較ci

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).

 

5、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 語句來調整你的查詢的性能。

相關文章
相關標籤/搜索