当前位置: 移动技术网 > IT编程>数据库>其他数据库 > Access和SQL Server里面的SQL语句的不同之处

Access和SQL Server里面的SQL语句的不同之处

2017年12月08日  | 移动技术网IT编程  | 我要评论
我的感觉是,accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言sql,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这

我的感觉是,accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言sql,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这应该和access属于office系列有关,基于它的开发和应用,自然就与vba扯上关系,因而access的函数库也就是vba的函数库,而非sql函数库。下面,我们来具体看下access和sql server在查询语句的编写上具体的不同。

一、数据类型转换:

  1. access: select '调查'+cstr(did) as diaocha from czdengji
  2. sql server: select artid,'调查'+cast(listid as varchar) as did from kingart where artdate>=getdate()

      access中sql查询的数据类型转换有很多函数,每一个函数都可以强制将一个表达式转换成某种特定数据类型。具体如下:cbool(expression) 、cbyte(expression) 、ccur(expression) 、cdate(expression) 、cdbl(expression) 、cdec(expression) 、cint(expression) 、clng(expression) 、csng(expression) 、cstr(expression) 、cvar(expression) 、cstr(expression),相信不用说明,大家也看得懂这各种转换符的意思。

二、iif函数(access专用)

  1. access: select id,iif(isfinished=1,'已完成','进行中'),name,diaocharen from czdiaocha order by isfinished asc
  2. sql server 的写法就相对更多,可以自定义函数,也可以使用case语句,如select id,case isfinished when 1 then '已完成'
    when 0 then '进行中'  end,name,diaocharen from czdiaocha order by isfinished asc

三、distinct关键字用法: access里面distinct(expression)的用法单一, expression 只能为指定字段,而不能为表达式,sql server则不同, expression 除了可以为单个字段,也可以为一个子查询等复杂表达式。

四、日期格式化

  1. access: 使用format()函数,select top 5 arttitle,format(artdate,'yy-mm-dd') as arttime from kingart where listid=9,这里使用format()函数,指定artdate(日期型)查询出来的格式为yy-mm-dd。
  2. sql server: 使用convert()函数,select id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news,这里的120,是指定格式为yy-mm-dd,如果是其他数字(101-120),就是其他的格式。

其它一些常用的sql语句集锦

  1. select top 5 * from food where fid not in(select top 5 fid from food) //查询第5到第10条记录
  2. delete from food where charindex('2007',uptime)>0 or charindex('2008', uptime )>0  //删除food表中uptime列包含有2007或2008的记录,即删除时间为2007年和2008年的更新记录
  3. select id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news  // sql server里面的convert函数,转换成 varchar(10)类型, 120为指定转换后的格式。
  4. select mealtype as 餐别,fname as 食物名称,sum(rjjingshisz)/2 as 人均净食生重总和 from czdengji where did=6 group by mealtype,fname    //分组查询,group by的本意就是重复的字段合为一,对应的信息,进行汇总(count、sum等运算)
  5. select count(id) from flow where convert(varchar(21),visittime,120) like '2007-01-26% ' ,日期型数据模糊查询。
  6. select * from ('msdasql','driver={sql server};server=服务器名字;uid=对端数据库的账号;pwd=对端密码', 对端数据库.权限者.对端的表) as 表   //跨服务器查询

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网