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

我的感觉是,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 表   //跨服务器查询

(0)

相关推荐

  • JavaScript使用ActiveXObject访问Access和SQL Server数据库

    JS操作 Access 数据库 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript">  <!--  var filePath = location.href.substring(0, location.href.indexOf("实例197.连接Access数据库.html"));    //以当前页面文件为基础,找到文件所在的绝对路径  var path = filePath + "197.mdb"

  • 在ACCESS和SQL Server下Like 日期类型查询区别

    最近在用ACCESS数据库是遇到的问题总结: 一.在ACCESS中LIKE的用法 Access里like的通配符用法是这样: "?"表示任何单一字符: "*"表示零个或多个字符: "#"表示任何一个数字 所以应该是: select * from databasename where fieldname like '*XX*' 但在SQL SERVER 里是用%表示零个或多个字符 二.如何在ACCESS查询datetime类型字段的日期范围数据 如

  • SQL Server数据复制到的Access两步走

    我们今天主要向大家讲述的是把SQL Server数据复制到的Access数据库中的实际操作步骤,把SQL Server数据库中的某些数据复制到的Access数据库中,其表的主要结构是相同的,不要提用openrowset,因为Access文件和SQL Server不在一台机器上. 初步的想法是用两个recordset,一个从SQL取数据,一个往Access里面插入数据 因为表的字段比较多,所以只好用一个循环 while (!m_pRecordset_sql->adoEOF) { m_pRecord

  • SQL SERVER 与ACCESS、EXCEL的数据转换方法分享

    在Transact-SQL语句中,我们主要使用OpenDataSource函数.OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助.利用下述方法,可以十分容易地实现SQL SERVER.ACCESS.EXCEL数据转换,详细说明如下: 一.SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Tra

  • 自己动手把ACCESS转换到SQLSERVER的方法

    在介绍教程之前,我们先来认识一下Access和SQL SERVER两种数据库. Microsoft Office Access简介 Microsoft Office Access是由微软发布的关联式数据库管理系统.它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程式之一. Microsoft Office Access缺陷 1,数据库过大时,一般ACCESS数据库达到100M左右的时候性能就会开始下降!(

  • Access 导入到SQL Server 2005的方法小结

    方法一: 名称:DTS(这个在MSSQL2000里边也有) 操作:在命令提示符窗口中运行 DTSWizard.exe SQL Server 导入和导出向导提供了生成 Microsoft SQL Server 2005 Integration Services (SSIS) 包最简单的方法.SQL Server 导入和导出向导可以访问各种数据源.可以向下列源复制数据或从其中复制数据: ·Microsoft SQL Server ·文本文件 ·Microsoft Office Access ·Mic

  • 八步解决ACCESS自动编号问题(将SQL SERVER 2000数据库,转换为ACCESS数据库)

    第一步:打开你的"开始菜单",打开"程序"->SQL server enterprise mananger "企业管理器" 在你要导出的SQL数据库上鼠标右键菜单:所有任务->导出数据 第二步:会出现一个导出向导窗口.选择被导出的数据源,为你刚才所选择的数据库,如果发现不对应自行修改. 第三步:进入导出到目标数据源的选择,这里我们要转成ACCESS的数据库.注意选择数据源类型为"Microsoft Access.点 &quo

  • Sql Server、Access数据排名的实现方法(例如:成绩排名)

    但是,在SQL SERVER 2005 之前,SQL SERVER 2000 并没有提供这个直接的函数供我们使用,同样 ACCESS 也是如此. 下面我们分2种情况,来写出数据排名的实现过程.测试数据如下: 排名后的结果如下: Access 复制代码 代码如下: select name, score, (select iif(isnull(sum(1)), 1, sum(1) + 1) from score_rank where score > a.score) as rank from sco

  • Access转Sql Server问题 实例说明

    今天帮同学改一个老的系统作为毕业设计,这系统技术绝对落后asp+access.为了应付老师的验收,然后这同学编程又不是很好,而其到了最后时刻才想到开始做毕设,于是找到了我. 我看了他不知从哪里搞来的代码,跑了下,还行能跑,过两天就要验收程序了,把asp改成 asp.net是没时间了,于是我提议改下数据库算了,于是决定把access转成sql server.看似一个公司的产品,转起来问题到一大堆.现总结如下, 先说怎么转移数据,打开sqlserver的企业管理器,建立张表,然后右击那张表,点导入数

  • 将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)

    ACCESS2000文件 用ACCESS2007打开,并迁移到SQLSERVER2005里 打开ACCESS2007的数据库工具 方法一:使用ACCESS2007自带的数据库迁移工具 1.打开ACCESS2007的数据库迁移向导 2.点击SQLSERVER按钮,弹出升迁向导对话框 3.选择新建数据库 4.输入计算机名,我的本地计算机名字叫joe,因为SQLSERVER安装在本地,所以选择使用可信连接就可以了 数据库名称默认就可以了 5.选择所有表,移动到右边框 6.把表索引也一起升迁到SQLSE

  • sqlserver,sqlite,access数据库链接字符串整理

    SqlServer:string connection = "server=32.1.1.48;database=数据库名;user=sa;password=sa2008"; access 2007: //无密码的连接字符串 string conStr = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=E://111.accdb;Persist Security Info=False"; //有密码的连接字符串 str

  • asp.net下Oracle,SQL Server,Access万能数据库通用类

    复制代码 代码如下: using System; using System.Collections; using System.Collections.Specialized; using System.Data; using System.Data.SqlClient; using System.Data.OleDb; using System.Data.OracleClient; using System.Configuration; using System.Reflection; nam

  • SQLServer与Access常用SQL函数区别

    SQLServer Access CASE...WHEN... IIF() SUBSTRING() MID() ISNULL() IIF(IS NULL) SELECT *,IIf([State]=1,'√','×') as StateTag FROM Leave order by id desc SELECT IIf([CateID] = 1, "文档"),IIf([CateID] = 2, "视频"),IIf([CateID] = 3, "音频&quo

  • SQL 随机查询 包括(sqlserver,mysql,access等)

    SQL Server: Sql代码 复制代码 代码如下: Select TOP N * From TABLE Order By NewID() NewID()函数将创建一个 uniqueidentifier 类型的唯一值.上面的语句实现效果是从Table中随机读取N条记录. Access: Sql代码 复制代码 代码如下: Select TOP N * From TABLE Order By Rnd(ID) Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(U

  • 将Access数据库中数据导入到SQL Server中的详细方法实例

    Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AccessToSQL.aspx.cs" Inherits="AccessToSQL" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

  • SQL Server中的数据复制到的Access中的函数

    初步的想法是用两个recordset,一个从SQL取数据,一个往Access里面插入数据 因为表的字段比较多,所以只好用一个循环 复制代码 代码如下: while (!m_pRecordset_sql->adoEOF) { m_pRecordset_access->AddNew(); for (int i = 0; i < m_pRecordset_sql->Fields->Count; i++) { vValue = m_pRecordset_sql->GetColl

随机推荐