设为首页 - 加入收藏 - 网站地图 - RSS订阅 村姑网-www.cunguer.com
当前位置:首页 > 数据库 > access > 正文

Access与Sqlserver的sql语句及函数的差异小总结

时间:2015-12-05 19:54:16 来源:互联网 作者:未知 阅读:
导读:本文主要介绍了access与sqlserver在某些函数和sql查询语句使用上的一些差异,句句都是作者在使用access与sqlserver中的经验之谈,这些经验可以有效的帮助我们新手朋友更加快速的了解并掌握access数据库和sqlserver数据库在使用中的不同之处,使我们少走弯路...

    本文主要介绍了access与sqlserver在某些函数和sql查询语句使用上的一些差异,句句都是作者在使用access与sqlserver中的经验之谈,这些经验可以有效的帮助我们新手朋友更加快速的了解并掌握access数据库和sqlserver数据库在使用中的不同之处,使我们少走弯路。

在access中,转换为大写的sql函数是ucase,在sqlserver中,转换为大写的函数是upper; 在access中,转换为小写的函数是lcase,在sqlserver中,转换为小写的函数是lower;在access中,取当前时间的函数是 now,另外还有一个取日期函数date,在sqlserver中,取当前的函数是getdate,没有直接的取日期函数。
在access中,datediff()和dateadd函数表示时间类型的部分必须用单引号括起来,写成这种样式:select datediff('n',addtime,now()) from * ……,或者select dateadd('d',5,now()),而在sqlserver中,必须写成select datediff(n,addtime,getdate()) from *……,或者select dateadd(d,5,getdate())。
在access中,字符串类型的数据不能用replace函数,但可以用 函数,备注类型的数据也一样。字符串类型的数据和备注类型的数据都可以用like来查找匹配。在sqlserver中,字符串类型的数据可以用 replace函数和 函数,但是ntext类型的数据不能。而且sqlserver中ntext类型的数据还不能用like来查找匹配。
不过access和sqlserver都支持系统变量@@identity,这一点知道的人不多。
其它异同之处,容我一一补充。

另外我得继续说区别:在access的sql函数dateadd和datediff中,表示年的时间类型是yyyy,月是m,天是d,小时是h,分钟是n,秒是s。但是在sqlserver中,年是yyyy或yy,月是mm或m,天是dd或d,小时是hh,分是mi或n,秒是ss或s。特别是表示那个小时的时间类型特格外注意区别。

我觉得,因为sqlserver函数多,所以相较之下比较容易编程,而Access函数少,编程反而麻烦。不过幸好Access还支持vba

我还发现了sqlserver与Access的一点区别:
在sqlserver中,查询语句可以用这样的语法:
update *** set ***=*** where *** in (select ** from *** where *******)和select **** from **** where ***=(select *** from *** where ****),但是在Access中,只能用后者。也就是说,在Access中,只查询只能用于select语句不能用于update语句。
不过我发现Access同时也支持这样的sql:update *** set ***=(select *** from *** where ***=***) where ***=***和delete from *** where *** in (select *** from *** where ***=***)这样的sql。

推荐内容