您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

DB Oracle与Access在开发中的不同之处

2024/2/20 5:47:25发布21次查看
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
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数据库是只读的,更改使其为可写即可。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product