总结一点Access与Sqlserver的sql的差异
最近整理出来的.如果不完全的话希望大家补充.
在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。
access函数大全
CDate 将字符串转化成为日期 select CDate("2005/4/5")
Date 返回当前日期
DateAdd 将指定日期加上某个日期se
相关文档:
Sql常用语法下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句:
1、说明:创建数据库
CREATE ......
1.用一条Sql语句查询出每门功课都大于80分的学生姓名
Name
Class
Result
张三
语文
56
张三
数学
88
李四
语文
92
李四
数学
100
王五
语文
88
王五
数学
99
王五
英语
99
-------------------------------------------------------------------------------
答案:
SELECT DISTINCT nam ......
本文主要内容属转载,但笔者根据该文内容测试成功,故分享于此。
笔者实验环境:Windows Server 2003 Enterprise Edition。
先给出原文链接,稍后调整。
原文链接为:http://www.shilai.cn/2007/5/6/problems-of-installing-sql2005.aspx ......
建立表:
CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [ ......
create function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
......