已經有很多關於oracle和SQL Server區別的文章,從企業和數據庫管理員的角度描述了它們之間的壹般區別。在本文中,我將從應用程序的角度描述SQL Server和Oracle平臺之間的差異,並討論幾種開發不依賴於數據庫環境的應用程序的可能方法。同時,我不會討論這兩個應用程序平臺之間的明顯差異,例如表分段和索引。
定義通用接口和語言很少有通用語言和接口可以使應用程序獨立於數據庫,並且可以以同樣的方式應用於關系數據庫:ANSI是由美國國家標準局定義的,它是壹個誌願者成員的組織(由私人基金運營)。他們在設備和程序等廣泛領域制定了國家認可的標準。在數據庫領域,ANSI定義了編寫SQL命令的標準,假設命令可以在任何數據庫上運行,而無需更改命令的語法。
ODBC是微軟定義的開放式數據庫連接(ODBC)接口,允許應用程序訪問數據庫管理系統(DBMS)中的數據。使用SQL作為訪問數據的標準,ODBC允許最大程度的互連,這意味著單個應用程序可以訪問不同的數據庫管理系統,然後應用程序最終用戶可以添加壹個開放式數據庫連接(ODBC)。OLE DB是ODBC的繼承者,是壹組允許妳連接到前臺的軟件組件,比如基於VB C++ Access的SQL Server Oracle DB MySQL。在許多情況下,OLE DB組件提供了比原始ODBC更好的性能。
JDBC(Java database connection)應用程序編程接口是壹種Java編程語言和廣泛的數據庫、SQL數據庫和其他表格數據源(如電子表格或普通文本文件)。JDBD API是獨立於數據庫的連接的行業標準,它為基於SQL的數據庫訪問提供了壹個調用級應用程序接口。不幸的是,並不是所有的數據庫級命令都是ANSI的,每個數據庫平臺都有自己的擴展功能。壹般來說,ANSI或通用接口代表幾個功能,所以它也可能意味著性能的損失。對於小型數據庫和小型應用程序來說,維護對數據庫的通用訪問是很簡單的,但是當數據庫和/或應用程序變得更大和更復雜時,您必須在代碼中添加函數。
SQL Server與Oracle常用功能的比較
數學函數
絕對值
s:選擇abs()值
o:從dual中選擇abs()值
Round (large) s:選擇ceiling()值o:從dual選擇ceiling()值。
圓形(小)
s:選擇樓層( )值O:從dual中選擇樓層( )值
舍入(截斷)
s:選擇cast( as int)值O:從dual中選擇trunc()值
Round s:選擇Round()值o:從dual中選擇round()值。
e基冪s:select exp()value o:select exp()value from dual。
以e為底的對數s:select log()value o:select ln()value from dual;
取底對數
s:選擇log()值
o:從dual中選擇log()值;
平方
s:選擇平方( )值
o:從dual中選擇power()值
求平方根
s:選擇SQRT()值
o:從dual中選擇SQRT()值
求任意數為基數的冪s:選擇冪()值o:從對偶中選擇冪()值。
隨機數
s:選擇rand()值
o:從dual中選擇sys dbms_random value()值;
獲取符號
s:選擇符號( )值
o:從dual中選擇符號( )值
三角函數相關性
Pi S:選擇Pi()值
奧:我不知道
正弦余弦正切參數都以弧度為單位。
例如,選擇sin(PI()/)值(SQLServer)。
Asin Acos Atan Atan返回弧度。
弧角交換(SQLServer Oracle未知)
弧度>角度
弧度角度>弧度
值之間的比較
求壹個集合的最大值
s:選擇最大值
(選擇值
聯盟
選擇值
聯盟
選擇值
聯盟
選擇值)a
o:從dual中選擇最大( )值
求集合的最小值
s:從中選擇最小值
(選擇值
聯盟
選擇值
聯盟
選擇值
聯盟
選擇值)a
o:從dual中選擇最小( )值
如何處理null值(在f中改為null)s:select f是來自TBL的null (f)值o: select f nvl (f)值來自TBL。
字符串處理功能
查找字符序列號
s:選擇ascii( a)值
o:從dual中選擇ascii( a)值
從序列號中查找字符
s:選擇char()值
o:從dual中選擇chr()值
連接
s:選擇+ +值
O:select CONCAT( )||來自dual的值
子字符串位置返回s:select charindex(sdsq)value o:select instr(sdsq)value from dual。
模糊子串的位置返回參數如果去掉中間%則返回//本文轉自C++Builder的研究?我= & ampd = dwn rns:select patindex(% d % q % sdsfasdqe)valueo:Oracle沒有找到,但是instr可以通過第四個參數控制出現的次數。Select INSTR (sdsfasdqe SD)值從dual返回。
查找子串s:select substring(ABCD)value o:select substr(ABCD)value from dual。
子串替換返回aijklmnefs:select stuff(abcdefijklmn)value o:select replace(abcdefbcdijklmn)value from dual。
子串替換
學生:更換
o:從dual中選擇翻譯(fasdbfasegasfa me)值
長度S:len數據長度
o:長度
大小寫轉換下上
將單詞的第壹個字母大寫
史:我沒找到
o:從dual中選擇INITCAP( abcd dsaf df)值
填充左邊的空格(LPAD的第壹個參數是壹個空格,與space函數相同)
s:選擇空格()+ abcd值
o:從dual中選擇LPAD( abcd)值
向右填充空格(如果RPAD的第壹個參數是空格,它與space函數相同)
s:選擇abcd +space()值
o:從dual中選擇RPAD( abcd)值
刪除空格S:ltrim rtrim O:ltrim rtrim trim。
重復字符串S:選擇復制(abcd)值。
o:我沒找到
發音相似度比較(這兩個單詞發音相同,返回值相同)S:Select soundex (Smith) soundex (Smythe)O:從Dual SQL Server中選擇Soundex(Smith)Soundex(Smythe),用Select Difference(S mithers Smythers)比較Soundex的差異並作為最高同音異義詞返回。
日期函數
系統時間
s:選擇getdate()值
o:從dual中選擇系統日期值
前後幾天
用整數直接加減。
查找日期s: select convert (char () getdate())值。
o:從dual中選擇trunc(sysdate)值
從dual中選擇to_char(sysdate yyyy mm dd)值
查找時間s:select convert(char()getdate())value o:select to _ char(sysdate hh:mm:ss)value from dual。
取日期和時間的另壹部分
S:DATEPART和DATENAME函數(由第壹個參數決定)
O:to_char函數的第二個參數決定
下面的參數表需要補充。
年y yyyy季qq q(季)月mm m (m O無效)年Dyy日Dyy(O代表周)日dd d (d O無效)周wk ww (wk O無效)。
工作日dw (O不清楚)
小時hh hh (hh hh S無效)分鐘min(n 0無效)秒ss(S 0無效)
毫借調ms (o無效)
每月的最後壹天
斯:我不知道
o:從dual中選擇最後壹天(系統日期)值
本周的某壹天(如周日)
斯:我不知道
o:從DUAL中選擇Next_day(sysdate)值;
字符串到時間
s:您可以直接切換或選擇cast(作為datetime)值。
o:從DUAL中選擇To_date( : : yyyy mm dd hh mi ss)值;
找出兩個日期的某些部分之間的差異(如秒)。
s:select datediff(ss getdate()getdate()+)valueo:直接減去兩個日期(例如d d =)。
從DUAL中選擇(d d )* * *值;
根據差異找到新的日期(如分鐘)。
s:選擇dateadd(mi getdate())值
o:從DUAL中選擇sysdate+//value;
查找不同時區的時間
斯:我不知道
o:從DUAL中選擇New_time(sysdate ydt gmt)值;
東區時區參數北京應該是Ydt。
大西洋標準時間
BST BDT白令海標準時間
中部標準時間
東部標準時間
GMT格林威治標準時間
HST HDT阿拉斯加-夏威夷州標準時間
MST MDT山地標準時間
紐芬蘭標準時間
太平洋標準時間
YST YDT育空標準時間
Oracle支持的字符函數及其Microsoft SQL Server等效函數:
函數Oracle Microsoft SQL Server
將字符轉換為ASCII ASCII ASCII。
字符串串聯(表達式+表達式)
將ASCII轉換為字符CHR CHAR
返回字符串中的起始字符(從左開始)。
將字符轉換成小寫小寫小寫
將字符轉換為大寫大寫。
填寫字符串的左側LPAD N/A。
清除開頭的空白LTRIM LTRIM
清除末端的空白RTRIM RTRIM。
字符串instr patindex中的起始模式。
重復字符串RPAD復制許多次。
字符串的語音表示是SOUNDEX SOUNDEX
具有重復空間的弦RPAD空間
從數字數據轉換為字符數據TO_CHAR字符串
子串子串
替換字符替換材料
將字符串init cap n/a中每個單詞的首字母大寫。
翻譯字符串翻譯不適用
字符串長度長度日期長度或長度
最大不適用,列表中最大的字符串。
列表中最小的字符串不適用。
Lishi Xinzhi/Article/program/Oracle/201311/16561