Oracle數(shù)據(jù)庫與Access、SQL Server常見應(yīng)用比較
以下的文章主要是介紹Oracle數(shù)據(jù)庫與Access、SQL Server、常見應(yīng)用的比較,我在某公司做一個(gè)產(chǎn)品中,需要用到的有Access、SQL Server、Oracle數(shù)據(jù)庫這三個(gè)版本;編寫SQL語句的過程中,盡量使用一些通用的語句,但還是有些方面有些區(qū)別避免不了,現(xiàn)簡單總結(jié)一下。
以下A代表Access,S代表SQL Server,O代表Oracle
1、取當(dāng)前系統(tǒng)時(shí)間
A:Select Now()
S:Select Getdate()
O:Select Sysdate From Dual
2、連接字符串
A:&
S:+
O:||
3、字符串函數(shù)(截取字符串、大寫、小寫、查找字符串位置)
A:Mid、UCase、LCase、InStr
S:SubString、Upper、Lower、CharIndex
O:SubStr、Upper、Lower、InStr
4、判斷取值語句
A:IIF
S:Case When Then
O:Decode
5、時(shí)間字段
A:要用#號(hào)分隔,或者轉(zhuǎn)換為日期
SELECT * FROM Books WHERE RegDate = #2007-5-1# 或
SELECT * FROM Books WHERE RegDate = CDate(’2007-5-1′)
S:可以直接用''
- SELECT * FROM Books WHERE RegDate = ‘2007-5-1′
- O:To_Date
- SELECT * FROM Books WHERE RegDate=To_Date('2007-05-01','yyyy-mm-dd')
6、數(shù)據(jù)類型轉(zhuǎn)換
A:CStr,CInt,CDate
S:Convert
O:To_Char,To_Number,To_Date
7、Inser Into …..Select …From 語句
- Insert Into a(ii,jj,kk) (Select ii,jj,kk From b)
這樣的語句,在SQL Server以及Oracle數(shù)據(jù)庫中都不會(huì)有錯(cuò),但在Access中會(huì)報(bào):INSERT INTO 語句的語法錯(cuò)誤。Access應(yīng)該把后面Select語句的括號(hào)去掉,如下:
- Insert Into a(ii,jj,kk) Select ii,jj,kk From b
同時(shí)這樣寫在SQL Server和Oracle中都不會(huì)有錯(cuò)
8、關(guān)鍵字
有些字母在Access,SQL Server中是關(guān)鍵字,需要用[ ]界定可解決問題,例如:at,name
9、別名
SQL Server和Oracle中字段起別名時(shí)as可以省略,Access不能
10、表名前綴
- Select *,1 From A
這樣的語句在Access,SQL Server中不會(huì)有錯(cuò),但在Oracle數(shù)據(jù)庫中是不行的,必須要寫成這樣:
- Select A.*,1 From A
11、如果語句中有:(冒號(hào)),例如有時(shí)間字段的查詢:CalcDate=#2008-05-01 11:00:00#,在Access中一般會(huì)出現(xiàn)如下錯(cuò)誤:不正常地定義參數(shù)對(duì)象。提供了不一致或不完整的信息。將相應(yīng)Query的ParamCheck設(shè)為False即可。
12、Access中的邏輯值在庫中為-1和0,而SQL Server中為1和0,所以寫B(tài)oolField = 1這樣的語句有兼容性問題,應(yīng)該改為BoolField <> 0
13、Access的varchar(文本)型最大只有255,所以如果一個(gè)文本型字段大于255時(shí),最好定義成備注型(Access中)或text型(SQL Server中);
【編輯推薦】