首頁 >專題 >Access >access與sql server的語法對比

access與sql server的語法對比

王林
王林轉載
2021-02-20 13:39:334200瀏覽

access與sql server的語法對比

本文為大家簡單整理了access與sql server的文法區別,希望對大家有幫助。

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

以下所示的解決方案中的函數定義在untDataBase單元中TAdoConn類別的方法中。

access與sql server的語法對比

二、Access與SQLSERVER部分相同資料庫函數及關鍵字清單

1、函數

access與sql server的語法對比

access與sql server的語法對比

2、關鍵字

三、Access與語句SqlServer的語句語法區別

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

在ACCESS中以下語句

 Insert INTO

PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Proacc_type,Sub_name,acc_short,Acc_Comment,Acc_Proacc_type,Sub_name,flag_ 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')

11111150 月中>2000> 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 Fcc_VubScc_Pro,accJ3,Sub_id_flag,中都可以

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 onuser a inner join (syscopysuser c inner join syscopys b onuser a inner join (syscopysuser c inner join syscopys b onuser a 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 sysleoption.

'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_leoption. #5、 Update語句

Sql SerVer 中能執行但Access 中不能

'Update sysuserrole SET sysuserrole.role_sort = (Select sysrole.role_sort FROM sysrole Where sysuser 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 '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) '#'###

參考以上的第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_parent '''

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資料庫教程

以上是access與sql server的語法對比的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除