1. 函數名稱的 不同 功能 Oracle Access 字符函數: 返回字符的 ASCII 碼 ASCII(x) ASC(x) 返回 ASCII 為 X 的字符 CHR(x) CHR(x) 式化字符串 To_Char( x, format ) Format(x, format) 轉換字母大小寫 LOWER(x)UPPER(x) LCASE(x)UCASE(x) 求字符串長度 LENGT
功能 |
Oracle |
Access |
字符函數: |
||
返回字符的ASCII碼 |
ASCII(x) |
ASC(x) |
返回ASCII為X的字符 |
CHR(x) |
CHR(x) |
格式化字符串 |
To_Char( x, format ) |
Format(x, format) |
轉換字母大小寫 |
LOWER(x) UPPER(x) |
LCASE(x) UCASE(x) |
求字符串長度 |
LENGTH(x) |
LEN(x) |
去除字符串中的空格 |
LTRIM(x[, trim_string]), RTRIM(x[,trim_string]) TRIM([trim_string From ]x) |
LTRIM(x) RTRIM(x) TRIM(x) |
取子字符串 |
SUBSTR(x, start[,length]) |
LEFT(x, length) MID(x,start,length) RIGHT(x,length) |
轉換函數: |
||
如果X與search相等,返回result,否則,返回default |
Decode(x, search,result,default) |
IIF(x=search, result, default) |
將數字轉換為字符串 |
To_Char(x) |
CStr(x) |
將字符串轉換為數字 |
To_Number(x) |
CDbl() --轉換為dbouble |
如果ColName為空,返回result,否則,返回ColName的值。 |
NVL(ColName, result) |
IIF(IsNull(ColName), result, ColName) |
日期函數: |
||
當前系統時間(日期小時分秒) |
sysdate |
NOW() |
當前日期 |
Trunc(sysdate) |
DATE() |
當前時間 |
-- |
TIME() |
返回時間的某個部分 |
To_Char( sysdate, ‘yyyy’ ) To_Char( sysdate, ‘mm’ ) To_Char( sysdate, ‘dd’ ) To_Char( sysdate, ‘hh’ ) To_Char( sysdate, ‘mi’ ) To_Char( sysdate, ‘ss’ ) Extract( Year From Sysdate ) Extract( Month From Sysdate) Extract( Day From Sysdate) Extract( Hour From TimeStamp '2007-09-27 0:0:0') Extract( Minute From TimeStamp '2007-09--27 23:59:59') |
Year(now()) Month(now()) Day(now()) Hour(now()) Minute(now()) Second(now()) DatePart(format, now()) |
將字符串轉換為日期 |
To_Date( x, format ) |
CDate(x ) #date_string# |
1、Oracle支持連續的Left Join,但是Access不支持。
Access實現Oracle的連續兩個Left Join的方法:
Select * From TblA Left Join
(Select * From TblB Left Join TblC )
2、Access給字段起別名是必須用AS,但是Oracle不用AS也可以,建議起別名全部都用AS
3、Oracle可以使用 Select Count( Distinct ColumnName ) From…..的語法,但是Access中不可以。Access中要實現這樣的功能,要使用嵌套查詢:
Select Count(*) From
( Select Distinct ColumnName From Tbl….)
4、Oracle中,如果TblA Left Join TblB,那么結果集是TblA中數據的數量。但是在Access中,TblA Left Join TblB,結果集的數量是TblA* TblB的數量。
5、在Oracle中,用一條SQL向一個遞增的字段插入數據可以使用如下SQL:
Insert Into TblA ( N_ID ) Values ( ( Select ( Nvl( Max(N_ID), 0 )+1 ) from TblA ) );
但是由于函數的不同,在Access中需要使用下面的SQL:
Insert Into TblA( N_ID ) Values ( IIF( IsNull(DLookUp( ‘Max(N_ID)+1’, ‘TblA’, ‘’ ) ), 1, DLookUp( ‘Max(N_ID)+1’, ‘TblA’, ‘’ ) ) );
DLookUp是Access的一個內置的函數,使用方法為:
DLookup("字段名稱" , "表或查詢名稱" , "條件")
返回的結果為:從根據“條件”,從“表或查詢名稱”中查出“字段名稱”的值。
1、不正常地定義參數對象。提供了不一致或不完整的信息
這個錯誤經常出現在操作Access數據庫的日期字段時發生。原因為,Delphi默認將:X認為是一個參數,而Access中的時間可以表示為#2007-01-01 10:11:12#,這樣,Delphi在解析這個字符串時會出問題。
解決方法有兩個:
1 在給TADOQuery對象的SQL屬性賦值前,先調用qry.ParamCheck := True;然后再執行后續操作。在操作完成后,執行qry.ParamCheck := False,恢復默認設置。
2 SQL語句中,將日期類型的字段全部作為參數來操作,例如:
sSql := ‘Insert Into TblA ( D_Date ) values (:D_Date)’;
qry.SQL.Text := sSql;
qry.ParamByName(‘D_Date’).Value := DateValue;
2、類似于“不可更新的查詢”的錯誤。
Access數據庫是只讀的,更改使其為可寫即可。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com