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

  • 相关阅读:
    26. Remove Duplicates from Sorted Array
    Luogu1879 [USACO06NOV]玉米田Corn Fields (状压DP)
    Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)
    Luogu4408 [NOI2003]逃学的小孩 (树的直径)
    Luogu2574 XOR的艺术 (分块)
    Luogu3740 [HAOI2014]贴海报 (线段树)
    LuoguU72177 火星人plus (逆康拓展开)
    Luogu1919 【模板】A*B Problem升级版(FFT)
    Luogu5367 【模板】康托展开 (康拓展开)
    Luogu1088 火星人 (康托展开)
  • 原文地址:https://www.cnblogs.com/janehlp/p/6650823.html
Copyright © 2020-2023  润新知