時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
??? 許多軟件公司都理解開發(fā)不依賴于特定數(shù)據(jù)庫類型(例如Oracle、SQL Server、DB2)的應用程序的重要性,它可以讓客戶們選擇自己習慣的平臺。一般來說,軟件開發(fā)人員都能夠識別出他們的負責數(shù)據(jù)庫維護的客戶,和必須使用現(xiàn)有平臺和個性化的客戶。
??? 關于Oracle和SQL Server之間的區(qū)別,已經(jīng)有很多篇文章從企業(yè)的角度和數(shù)據(jù)庫管理員的角度出發(fā)描寫了兩者之間的一般差別。在這篇文章里面,我將會從應用程序的角度向你描述SQL erver 和oracle平臺之間的區(qū)別,并且將會討論開發(fā)不依賴于數(shù)據(jù)庫環(huán)境的應用程序的幾種可能的方法。與此同時,我不會再論討對于應用程序來說,兩個平臺之間顯而易見的區(qū)別,例如表的分割和索引。
??? 定義通用接口和語言有很少的幾種通用語言和接口可以讓應用程序不依賴于數(shù)據(jù)庫,想來也可以以同樣的方式應用在關系型數(shù)據(jù)庫上面: ANSI是美國國家標準局定義的,這是一家志愿者成員的組織(用私人基金運轉),他們在有關設備和程序等廣泛領域內(nèi)開發(fā)了國家承認的標準。在數(shù)據(jù)庫領域, ANSI定義了編寫SQL命令的標準,假設命令可以運行在任何的數(shù)據(jù)庫上,而不需要更改命令的語法。
??? ODBC是開放數(shù)據(jù)庫連接(ODBC)接口,微軟定義的,它可以讓應用程序訪問數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的數(shù)據(jù),使用SQL作為訪問數(shù)據(jù)的標準。ODBC允許最大的互聯(lián)性,這意味著一個單個的應用程序可以訪問不同的數(shù)據(jù)庫管理系統(tǒng)。然后,應用程序終端用戶可以添加開放數(shù)據(jù)庫連接(ODBC)數(shù)據(jù)庫驅動來將應用程序與他們所選擇的數(shù)據(jù)庫管理系統(tǒng)鏈接上。 OLE DB是ODBC的繼承者,是一組允許例如基于VB、C++、Access等任何可以連接到類似SQL Server、Oracle、DB2、MySQL等后臺的"前臺"的軟件組件。在許多種情況下,OLE DB組件都比原有的ODBC提供了好得多的性能。
??? JDBC(Java數(shù)據(jù)庫連接)應用程序接口是Java編程語言和廣泛范圍的數(shù)據(jù)庫,SQL數(shù)據(jù)庫和其他表列數(shù)據(jù)源(例如電子表格或者普通文本文件)之間,進行不依賴于數(shù)據(jù)庫的連接的行業(yè)標準。JDBD應用程序接口為基于SQL的數(shù)據(jù)庫訪問提供了調(diào)用級別的應用程序接口。真實世界中的通用接口不幸的是,并不是所有數(shù)據(jù)庫級別的命令都是ANSI,每個數(shù)據(jù)庫平臺都有自己的擴展功能。對于ANSI或者通用接口,一般來說都代表著幾本功能,因此也可能意味著喪失了性能方面的競爭力。對于小型數(shù)據(jù)庫和小型應用程序來說,要維護對數(shù)據(jù)庫的通用訪問是簡單的,但是當數(shù)據(jù)庫和/或應用程序變得越來越大,越來越復雜,你就不得不向代碼中添加功能。
??? SQL Server和Oracle的常用函數(shù)對比
? ---------數(shù)學函數(shù)
??? 1.絕對值
??? S:select abs(-1) value
??? O:select abs(-1) value from dual
??? 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual
??? 3.取整(小)
??? S:select floor(-1.001) value O:select floor(-1.001) value from dual
??? 4.取整(截?。?/p>
??? S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual
??? 5.四舍五入S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346
??? 6.e為底的冪S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182
??? 7.取e為底的對數(shù)S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) value from dual; 1
??? 8.取10為底對數(shù)
??? S:select log10(10) value 1
??? O:select log(10,10) value from dual; 1
??? 9.取平方
??? S:select SQUARE(4) value 16
??? O:select power(4,2) value from dual 16
??? 10.取平方根
??? S:select SQRT(4) value 2
??? O:select SQRT(4) value from dual 2
??? 11.求任意數(shù)為底的冪S:select power(3,4) value 81 O:select power(3,4) value from dual 81
??? 12.取隨機數(shù)
??? S:select rand() value
??? O:select sys.dbms_random.value(0,1) value from dual;
??? 13.取符號
??? S:select sign(-8) value -1
??? O:select sign(-8) value from dual -1
? ----------三角函數(shù)相關
??? 14.圓周率S:SELECT PI() value 3.1415926535897931
??? O:不知道
??? 15.sin,cos,tan 參數(shù)都以弧度為單位
??? 例如:select sin(PI()/2) value得到1(SQLServer)
??? 16.Asin,Acos,Atan,Atan2 返回弧度
??? 17.弧度角度互換(SQLServer,Oracle不知道)
??? DEGREES:弧度-〉角度
??? RADIANS:角度-〉弧度
? ---------數(shù)值間比較
??? 18. 求集合最大值
??? S:select max(value) value from
??? (select 1 value
??? union
??? select -2 value
??? union
??? select 4 value
??? union
??? select 3 value)a
??? O:select greatest(1,-2,4,3) value from dual
??? 19. 求集合最小值
??? S:select min(value) value from
??? (select 1 value
??? union
??? select -2 value
??? union
??? select 4 value
??? union
??? select 3 value)a
??? O:select least(1,-2,4,3) value from dual
??? 20.如何處理null值(F2中的null以10代替) S:select F1,IsNull(F2,10) value from Tbl O:select F1,nvl(F2,10) value from Tbl
? --------字符串函數(shù)
??? 21.求字符序號
??? S:select ascii('a') value
??? O:select ascii('a') value from dual
??? 22.從序號求字符
??? S:select char(97) value
??? O:select chr(97) value from dual
??? 23.連接
??? S:select '11'+'22'+'33' value
??? O:select CONCAT('11','22')||33 value from dual
??? 23.子串位置 --返回3 S:select CHARINDEX('s','sdsq',2) value O:select INSTR('sdsq','s',2) value from dual
??? 23.模糊子串的位置 --返回2,參數(shù)去掉中間%則返回7 // 本文轉自 C++Builder 研究 - http://www.ccrun.com/article.asp?i=996&d=dwn1rn S:select patindex('%d%q%','sdsfasdqe') value O:oracle沒發(fā)現(xiàn),但是instr可以通過第四個參數(shù)控制出現(xiàn)次數(shù)select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6
??? 24.求子串S:select substring('abcd',2,2) value O:select substr('abcd',2,2) value from dual
??? 25.子串代替 返回aijklmnef S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
??? 26.子串全部替換
??? S:Replace
??? O:select Translate('fasdbfasegas','fa','我' ) value from dual
??? 27.長度S:len,datalength
??? O:length
??? 28.大小寫轉換 lower,upper
#p#副標題#e#
??? 29.單詞首字母大寫
??? S:沒發(fā)現(xiàn)
??? O:select INITCAP('abcd dsaf df') value from dual
??? 30.左補空格(LPAD的第一個參數(shù)為空格則同space函數(shù))
??? S:select space(10)+'abcd' value
??? O:select LPAD('abcd',14) value from dual
??? 31.右補空格(RPAD的第一個參數(shù)為空格則同space函數(shù))
??? S:select 'abcd'+space(10) value
??? O:select RPAD('abcd',14) value from dual
??? 32.刪除空格S:ltrim,rtrim O:ltrim,rtrim,trim
??? 33. 重復字符串S:select REPLICATE('abcd',2) value
??? O:沒發(fā)現(xiàn)
??? 34.發(fā)音相似性比較(這兩
關鍵詞標簽:oracle,sql
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法