婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Access與sql server的語法區別總結

Access與sql server的語法區別總結

熱門標簽:硅基電話機器人官網 美國地圖標注軟件下載 漯河電銷回撥外呼系統 城市地圖標志怎么標注 電話機器人怎么看余額 長沙外呼系統平臺 西安電話自動外呼系統 合肥crm外呼系統加盟 怎么修改高德地圖標注

下邊列出sql server與access的語法差別,方便更換程序數據庫時查詢。

日期分隔符號
  access:英鎊符(#)
  sql server:撇號(')

Boolean 常量
  access:True、False;On、Off;Yes、No;整數:-1(真)、0(假)。
  sql server:整數:1(真)、0(假)

字符串連接
  access:和號()
  sql server:加號(+)

通配符
  access:星號(*)與零個或更多字符匹配。 
      問號(?)與單個字符匹配。
      嘆號(!)意味著不在列表中。
      英鎊符(#)意味著單個數字。
  sql server:百分號(%)與零個或更多字符匹配。 
      下劃線(_)與單個字符匹配。
      上插入符(^)意味著不在列表中。
      沒有與英鎊符(#)對應的字符。

DROP INDEX
  access:Drop Index 索引名> ON 表名>
  sql server:Drop Index 表名>.索引名>

表添加標識列
  access:alter table 表名> add 列名> Counter(1,1)
  sql server:alter table 表名> add 列名> bigint identity(1,1) not null

一、有區別的函數及解決方案 

以下所示的解決方案中的函數定義在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代碼。

標簽:玉溪 吉林 瀘州 廣西 商洛 撫順 文山 濟源

巨人網絡通訊聲明:本文標題《Access與sql server的語法區別總結》,本文關鍵詞  Access,與,sql,server,的,語法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Access與sql server的語法區別總結》相關的同類信息!
  • 本頁收集關于Access與sql server的語法區別總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 邢台市| 枞阳县| 右玉县| 广昌县| 攀枝花市| 长兴县| 吉隆县| 鄯善县| 昌黎县| 聊城市| 永善县| 普定县| 淮南市| 杭州市| 长泰县| 谢通门县| 渝中区| 漳州市| 玉门市| 百色市| 青河县| 汝阳县| 白水县| 乌苏市| 牡丹江市| 尼勒克县| 吉首市| 尼玛县| 大港区| 永城市| 济南市| 樟树市| 元阳县| 乳山市| 余江县| 甘谷县| 白沙| 儋州市| 扎鲁特旗| 河曲县| 葵青区|