下边列出sql server与access的语法差别,方便更换程序数据库时查询。
日期分隔符号
  access:英镑符(#)
  sql server:撇号(')
Boolean 常量
  access:True、False;On、Off;Yes、No;整数:-1(真)、0(假)。
  sql server:整数:1(真)、0(假)
字符串连接 
  access:和号(&)
  sql server:加号(+)
通配符 
  access:星号(*)与零个或更多字符匹配。  
      问号("1" cellspacing="0" cellpadding="0" width="100%" align="center">
  
    
      号
      简述
      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代码。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?