SQL语句在Access与SQL数据库的区别

本文探讨了SQL Server与Access数据库在SQL语句上的差异,包括文本字段为空的处理方式、时间字段的默认值与比较方式、时间变量的插入方法以及备注类型的为空判断等方面。

  虽然这两个数据库都是出自微软之手,不可思意的是SQL语句却有所不同!下面我们就对比两者不同,这里只探讨SQL语句的不同,如果要非常详细认识还得各位查找相应帮助文档。A 为Access缩写,S为SQL数据库缩写。

  1、文本字段的为空的不同:
A中的语句可以是:where Field=' ' 或者 where Field is null都可以成立。
S数据库类型是char,却有些不同:where Field=null或where len(Field)=0

  2、时间字段的默认值不同:
A 中的默认值:Now()
S数据库默认值:GetDate()

  3、时间字段的比较不同:
   以datediff函数为例。
A中的语句可以是:where DateDiff('d',Field,Now())=1 ''这是检索时间为今天的记录。
S中的语句必须是:where DateDiff(dd,Field,Now())=1

  4、时间变量插入不同:
经常遇到时间赋于一个变量,然后在于变量插入到数据库!
recordset数据集写入数据库,没有任何区别,但是对于insert into语句就不同!(update语句中也没有区别,不知道‘盖痴’怎么会在这里搞个不同)
变量:datea,dateb都是从表单接收到的时间类型,经过Cdate转化的变量!
A中的语句:conn.execute("insert into table(datea,dateb) values(#"&datea&"#,#"&dateb&"#)")
S中的语句:conn.execute("insert into table(datea,dateb) values("&datea&","&dateb&")")
其中#号可以是半角引号。变成字符了,呵呵不信试试!

  5、备注类型为空判断:(2007-6-15)
用ASP写代码时,经常需要判断字段是否为空,最特殊的字段备注型判断为空,在SQL与ACCess不同!
S语句直接:if rs("Content")="" then
A语句需要:if isnull(rs("Content")) then

  至于字段类型、长度不同则不在此文探讨范围,有兴趣的话,大家都可以查看联机文档

转载于:https://www.cnblogs.com/geoff/archive/2007/10/14/923787.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值