Access、SQLServer、Oracle常见SQL语句应用区别

关劲松 PMP

如果要兼容Access、SQL Server、Oracle三个数据库版本;我们在编写SQL语句的过程中,尽量使用一些通用的语句,但还是有些方面有些区别避免不了,现简单总结一下。

以下A代表Access,S代表SQL Server,O代表Oracle

1、取当前系统时间

A:Select Now()

S:Select Getdate()

O:Select Sysdate From Dual

  
2、连接字符串

A:&

S:+

O:||

  
3、字符串函数(截取字符串、大写、小写、查找字符串位置)

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、时间字段

A:要用#号分隔,或者转换为日期

  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、数据类型转换

A:CStr,CInt,CDate

S:Convert,CAST

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中都不会有错,但在Access中会报:INSERT INTO 语句的语法错误。Access应该把后面Select语句的括号去掉,如下:

  Insert Into a(ii,jj,kk) Select ii,jj,kk From b

  同时这样写在SQL Server和Oracle中都不会有错

  
8、关键字

  有些字母在Access,SQL Server中是关键字,需要用[ ]界定可解决问题,例如:at,name

  
9、别名

  SQL Server和Oracle中字段起别名时as可以省略,Access不能

  
10、表名前缀

  Select *,1 From A

  这样的语句在Access,SQL Server中不会有错,但在Oracle中是不行的,必须要写成这样:

  Select A.*,1 From A

  
11、如果语句中有:(冒号),例如有时间字段的查询:CalcDate=#2008-05-01 11:00:00#,在Access中一般会出现如下错误:不正常地定义参数对象。提供了不一致或不完整的信息。将相应

Query的ParamCheck 设为False即可。

  
12、Access中的逻辑值在库中为-1和0,而SQL Server中为1和0,所以写BoolField = 1这样的语句有兼容性问题,应该改为BoolField <> 0

  
13、Access的varchar(文本)型最大只有255,所以如果一个文本型字段大于255时,最好定义成备注型(Access中)或text型(SQL Server中)。

Access、SQLServer、Oracle常见SQL语句应用区别的更多相关文章

  1. sqlServer存储过程与sql语句的区别

    sqlServer   存储过程与sql语句的区别 sql存储过程与sql语句的区别: 从以下几个方面考虑: 1.编写: 存储过程:编写比较难: sql语句:相对简单: 2.性能: 存储过程:高,可移 ...

  2. Oracle常见SQL语句

    --创建表空间--create tablespace ts_namedatafile 'd:\test\ts_name.dbf' size 100mautoextend on --调整表空间大小--a ...

  3. oracle常见sql语句优化

    1.* 号引起的运行效率 尽量降低使用select * 来进行查询,当你查询使用*, 数据库会进行解析并将*转换为所有列. select count(si.student_id)  from Stud ...

  4. oracle 中SQL 语句开发语法 SELECT INTO含义

    oracle 中SQL 语句开发语法 SELECT INTO含义 在ORACLE中SELECT INTO是如何使用的,什么意思?和SQL SERVER的不一样?   和sqlserver的不一样sql ...

  5. oracle常用SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  6. oracle 常用sql语句

    oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...

  7. Oracle和SQL语句的优化策略(基础篇)

    转载自: http://blog.csdn.net/houpengfei111/article/details/9245337 http://blog.csdn.net/uniqed/article/ ...

  8. oracle的sql语句大小写

    我相信大家都知道,oracle数据库是区分大小写的,而且oracle的默认为大写的,也就是说你在sql脚本上面写的sql语句,oracle运行的时候,它会自动转化为大写的.注意一下,我这里举例子的计算 ...

  9. Oracle常用SQL语句大全

    常用Oracle数据库SQL语句汇总. 1.常用操作 --清空回收站purge recyclebin;--查询回收站select * from recyclebin--查询Oracle版本信息sele ...

随机推荐

  1. Centos6.7 64位安装配置kvm虚拟化

    首先,需要我们的cpu支持虚拟化,有的机器支持但是并未在bios开启,这个需要事先开启. 1. Dell R710安装centos6.7 64位 ,Dell R710在开机后按F2进入BIOS,Pro ...

  2. day43 数据库学习egon的博客 视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  3. Unity 游戏性能优化 学习

    优化误区   

  4. Unity3D\2D手机游戏开发 学习

    using UnityEngine; using System.Collections; [AddComponentMenu("Game/AutoDestroy")] public ...

  5. Oracle12C版本安装步骤

    一.下载路径 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html file1,file ...

  6. fork和exec

    fork pid_t fork(void); 它在调用进程(成为父进程)中返回一次,返回值为新派生进程(成为子进程)的进程ID号 在子进程中又返回一次,返回值为0.因此,返回值本身告知当前进程是子进程 ...

  7. mysql之 CentOS系统针对mysql参数优化

    内核相关参数(/etc/sysctl.conf)  以下参数可以直接放到sysctl.conf文件的末尾: net.core.somaxconn = 65535 net.core.netdev_max ...

  8. npm install 包 失败解决方法

    在ionic 安装包的时候 npm install xxx --save 出现如下错误 查看日志文件 14 verbose stack SyntaxError: Unexpected token &l ...

  9. Mysql 通信协议抓包分析

    mysql在传输层使用的TCP协议.一个TCP payload可能有多个mysql packet.如下图所示. TCP head TCP payload (mysql packet1, mysql p ...

  10. 【转】Python metaclass

    转自: http://ju.outofmemory.cn/entry/32434 在回答了 yield关键字和 decorator的问题之后,我更明白了,我决定非常详细地回答这个问题. 读前警告:这个 ...