最近需要从oracle往access导数据,在access里做处理,之后再导入oracle,被两者的差别恶搞了一把,所以把三者之间的区别做个介绍,希望能对大家有帮助,也欢迎补充。
数据库 功能 | ORACLE | ACCESS | SQL SERVER |
rownum | 支持 | 不支持 | |
递归start with connect by prior | 支持 | 不支持 | |
union和union all | union过滤重复数据,union all不过滤 | 用union查询长字符时可能显示不全,换成union all就可以;过滤重复的功能同oracle | |
汉字所占字节 | 汉字占两个字节,字母等占一个字节 | 汉字和字母都占一个字节 | |
like的使用 | 通配符是% | 通配符是* | |
获取当前系统时间 | select sysdate from dual | select Now() | select Getdate() |
连接字符串 | ||或者concat(a,b) | & | + |
字符串函数 | SubStr、Upper、Lower、InStr | Mid、UCase、LCase、InStr | SubString、Upper、Lower、CharIndex |
判断取值语句 | Case When Then或decode | iif | Case When Then |
时间字段 | SELECT * FROM Books WHERE RegDate=To_Date('2007-05-01','yyyy-mm-dd') | SELECT * FROM Books WHERE RegDate = #2007-5-1# 或 SELECT * FROM Books WHERE RegDate = CDate(’2007-5-1′) | SELECT * FROM Books WHERE RegDate = ‘2007-5-1′ |
数据类型转换 | To_Char,To_Number,To_Date | CStr,CInt,CDate | Convert |
Inser Into..Selec…From 语句 | Insert Into a(ii,jj,kk) (Select ii,jj,kk From b)红色部分加不加括号都行 | Insert Into a(ii,jj,kk) Select ii,jj,kk From b 红色部分加括号会报错 | 用法同oracle |
关键字 | 没有要求,可以直接用select sysdate as time from dual | 想用关键字作为字段名,需要用[]界定,如,select now() as [time] | 用法同access |
别名 | 字段起别名时,as可以省略 | as不能省略 | as可以省略 |
表名前缀Select *,1 From A | 必须写成Select A.*,1 From A | 可以写成Select *,1 From A | 用法同access |
varchar的长度 | 不限 | 最大值255,超过时,要使用备注型 | 最大值255,超过时,要使用text型 |