zoukankan      html  css  js  c++  java
  • Access、SQLServer、Oracle常见SQL语句应用区别

    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中)。

  • 相关阅读:
    I Hate It(线段树点修改区间查询)
    DFS(dfs)
    时间复杂度和空间复杂度的简单讲解
    [转]matlab读取cvs文件的几种方法
    适合小白的大白话讲解 --->Git 与 Github 的区别
    [转]串口、COM口、UART口, TTL、RS-232、RS-485区别详解
    Pandas学习之(一)
    正规表示法
    Numpy解决问题实例--随机漫步
    Python 中range和xrange的详细区别
  • 原文地址:https://www.cnblogs.com/janehlp/p/6650823.html
Copyright © 2011-2022 走看看