Access和sql server的语法区别

一、有区别的函数及解决方案 
以下所示的解决方案中的函数定义在untDataBase单元中TAdoConn类的方法中。

序号 简述 Access语法 SqlServer语法 Oracle语法 DB2语法 解决方案
01 系统时间 Date() GETDATE() SYSDATE   GetSysTimeStr
02 连接字符串 & + || + GetConcatStr
03 截取字符串 SubString SubStr SubString SubString GetSubStr
04 小写字符串 LCase Lower Lower Lower GetLowerStr
05 大写字符串 UCase Upper Upper Upper GetUpperStr
06 查找字符串 InStr InStr CharIndex InStr GetFindStr
07 替换空值 IIF+IsNull Coalesce Nvl Coalesce GetNullStr
08 条件取值 IIF Case+When+Else DeCode或Case IIF GetCaseStr
09 字段类型转换 Str、var、…. Convert或cast To_Char,To_Number. GetConvertStr GetConvertStr
10 日期字符串 ‘2004-10-9’ #2004-10-19# ‘2004-10-9’   GetDateStr
11 最大值加1          GetNextNumStr
12 Like语句函数 Like ‘101* Like ‘101%’ Like ‘101%’   GetLikeStr
             

二、Access与SQLSERVER部分相同数据库函数及关键字列表

1、 函数

序号  简述  
01 记数函数  Count
02 最大值 Max
     

2、 关键字

序号  简述  
01 Like
02 连接 Join
03 判断空 Is Null
     

三、Access与语句SqlServer的语句语法区别

1、 Inser Into …..Select …From 语句:

在ACCESS中以下语句

Insert INTO

PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) (Select 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index FROM PubSubJectAcc Where PubSubJectAcc.co_type='03')

中后面"(select 200201******.co_Type='03')"中的小括号("(",")")必须去掉才能执行,如下:

Insert INTO

PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) Select 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index FROM PubSubJectAcc Where PubSubJectAcc.co_type='03'

在SQL SERVER 中都可以

2、 Inner Join 语句1

StrSql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) on a.user_id=c.user_id where

a.user_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';

应该改为

StrSql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=d.copy_id) on a.user_id=c.user_id where

a.user_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';

该行代码的检索条件错误:应该把C.copy_id=C.Copy_id 改为c.copy_id=d.copy_id

注:两种写法都能在SQL-SERVER中运行,但c.copy_id=C.copy_id在ACCESS中不能运行

3、 Inner Join 语句2

StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.curcopy_flag=1 and a.copy_id=b.copy_id where b.user_id=' + '''' +TmpPubUserID+ '''';

该为

StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.copy_id=b.copy_id where a.curcopy_flag=''1'' and b.user_id=' + '''' +TmpPubUserID+ '''';

注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行

4、 Inner Join语句3

SQl server 中可以执行以下语句

'Select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort From sysoption inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id AND sysroleoption.role_id=:roleid'

但ACCESS中不能,只能

'Select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort From sysoption inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id Where sysroleoption.role_id=:roleid'

5、 Update语句

Sql SerVer 中能执行但Access 中不能

'Update sysuserrole SET sysuserrole.role_sort = (Select sysrole.role_sort FROM sysrole Where sysuserrole.role_id = sysrole.role_id and sysuserrole.user_id='01')'

6、 日期比较

SQL SERVER 中用

StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date '

+'From SysCopys '

+'where copy_id='''+LoginCopyID+''' '

+'and start_date<='''+datetostr(LoginDate)+''' '

+'and end_date>='''+datetostr(LoginDate)+'''';

ACCESS中用

StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date '

+'From SysCopys '

+'where copy_id='''+LoginCopyID+''' '

+'and start_date<=#'+datetostr(LoginDate)+'# '

+'and end_date>=#'+datetostr(LoginDate)+'#'

参考以上的第10个函数“GetDateStr”

7、 最大数值获取语句

StrSql:='insert into sysRoleOption '

+'select '''+fidRoleId+''' as Role_ID,opti_id,'

+'convert(numeric,opti_id)-(convert(numeric,opti_parentid)*100)+'+ MaxOptiSort

+' as opti_Sort from sysoption where opti_parentid='''

+PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID

+''' and opti_bottom=''1'+'''';

改为

StrSql:='insert into sysRoleOption '

+'select '''+fidRoleId+''' as Role_ID,opti_id,'

+'opti_id-opti_parentid*100+'+ MaxOptiSort

+' as opti_sort from sysoption where opti_parentid='''

+PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID

+''' and opti_bottom=''1'+''''

注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行

但是考虑会出现Null值以及语句的通用性,可以使用以上的第07个函数“GetNullStr”和第09个函数“GetConvertStr”来完成字符串向数字,空值和0数字的转换:参考GetNextNumStr代码。

1、Sql中不能省略as 
2、一次只能执行一条Sql 
3、没有substring、cast等函数 
4、sql中严格区分整形和字符型 
5、没有存储过程、触发器 
6、!= 替换为<> 
7、时间字符串两边加#号
8、带参数的sql语句中 @用?号替换

Access和sql server的语法区别相关推荐

  1. mysql与SQL SERVER 基本语法区别

    无论SQL SERVER 还是MYSQL 一个表只能存在一个字段是自增长列 1.修改表 --SQL SERVER alter table table_name drop column column_n ...

  2. C#连接4种类型数据库(Access、SQL Server、Oracle、MySQL)

    C#连接4种类型数据库(Access.SQL Server.Oracle.MySQL) 1.C#连接连接Access using System.Data; using System.Data.OleD ...

  3. SQL Server数据库语法篇(付费内容限时开放)

    SQL Server基础语法 一. 数据库的基本操作(命令操作) 1.1 创建数据库 1. create database 数据库名字 -- create databse mi-- 创建数据库并设置文 ...

  4. ACCESS转SQL SERVER的经验

    如何把ACCESS转成SQL数据库-access转sql软件 access转sql软件 软件简介: CooSel2.0 CreateSQL V1.05 档案包含 ASP 和 Exe 两个版本 Asp版 ...

  5. mysql和sql server有什么区别?

    MySQL和SQL Server之间的区别: 1.开源 MySQL是一个开源关系数据库管理系统(RDBMS):而SQL Server不是开源的,是商业的. 2.开发语言不同 mysql:mysql能用 ...

  6. 在Access和 SQL Server中通配符的应用方法

    [转自http://www.zylj.com/article/xgrj/rjyy/1617.html] Access和 SQL Server是企业中常用的数据管理和应用的平台,无论使用那种管理平台,对 ...

  7. Top 10 steps to optimize data access in SQL Server

    2009年04月28日 Top 10 steps to optimize data access in SQL Server: Part I (use indexing) 2009年06月01日 To ...

  8. access labsql 出错_一段由ACCESS转为SQL SERVER后出现的CINT错误

    你的位置: 问答吧 -> 网络编程 -> 问题详情 一段由ACCESS转为SQL SERVER后出现的CINT错误 Public Function getLevel (User_List, ...

  9. sql server基础语法 创建数据库 创建表

    sql server基础语法 创建数据库 创建表 1.创建数据库 2.表的创建 3.在现有表中添加标识列 4.创建外键 5.添加外键 6.约束 7.创建局部临时表 8.创建全局临时表 9.创建具有ch ...

最新文章

  1. 算法基础(09)— 字符串常用操作
  2. 机器学习之sklearn基础教程!
  3. ID3、C4.5、CART树算法简介,这几个算法有什么区别?对于异常值和分类值有什么需要注意的?
  4. 基于(Mixed)Integer Programming方法的服务组合相关论文实验介绍 (1)
  5. asin java_Java asin() 方法
  6. 汇编语言串指令经典题目
  7. 替换SAP Fiori Logo不成功的workaround
  8. 如何删除本地分支_如何上传项目到GitHub
  9. 3d立体相册特效html网页代码_新闻类网页正文通用抽取器
  10. 运动后肌肉酸痛怎么办?
  11. 下载LineageOS 源码编译
  12. oppo r9s 解bl锁,刷入第三方recovery
  13. 如何在移动硬盘上安装Ubuntu系统(2)
  14. 射击类项目(数据的持久化保存)整理四
  15. python递归解压文件_递归调用解压zip包或rar包
  16. 用pyecharts画地图(世界地图、中国省级地图、市级地图、某省市级地图、某市县级地图)
  17. python收益风险点图_使用python matploblib库绘制准确率,损失率折线图
  18. 13c语言——运算符
  19. 【代码洁癖症】第1回-简单工厂模式
  20. 回车换行问题0x0D和0x0A

热门文章

  1. centos 无法连接网络
  2. C++ 常用拷贝和替换算法
  3. C++中引用与指针的区别(详细介绍)
  4. 信号的基本概念以及信号的产生
  5. 5.07—018—周二
  6. FastReport4.6程序员手册_翻译
  7. 机器学习实战(笔记)------------KNN算法
  8. J - Borg Maze
  9. Go语言实现HashSet
  10. JSP EL表达式 param、paramValues的使用