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)
求字符串长度
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
cint() --转换为int
clng() --转换为long int
cbool() --转换为boolean
如果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#
2.sql语句实现的差别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(字段名称 , 表或查询名称 , 条件)
返回的结果为:从根据“条件”,从“表或查询名称”中查出“字段名称”的值。
3.使用delphi时遇到的一些问题的解决办法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数据库是只读的,更改使其为可写即可。
