Access與sql server的語法區(qū)別總結(jié)
下邊列出sql server與access的語法差別,方便更換程序數(shù)據(jù)庫時(shí)查詢。
日期分隔符號(hào)
access:英鎊符(#)
sql server:撇號(hào)(')
Boolean 常量
access:True、False;On、Off;Yes、No;整數(shù):-1(真)、0(假)。
sql server:整數(shù):1(真)、0(假)
字符串連接
access:和號(hào)(&)
sql server:加號(hào)(+)
通配符
access:星號(hào)(*)與零個(gè)或更多字符匹配。
問號(hào)(?)與單個(gè)字符匹配。
嘆號(hào)(!)意味著不在列表中。
英鎊符(#)意味著單個(gè)數(shù)字。
sql server:百分號(hào)(%)與零個(gè)或更多字符匹配。
下劃線(_)與單個(gè)字符匹配。
上插入符(^)意味著不在列表中。
沒有與英鎊符(#)對(duì)應(yīng)的字符。
DROP INDEX
access:Drop Index <索引名> ON <表名>
sql server:Drop Index <表名>.<索引名>
表添加標(biāo)識(shí)列
access:alter table <表名> add <列名> Counter(1,1)
sql server:alter table <表名> add <列名> bigint identity(1,1) not null
一、有區(qū)別的函數(shù)及解決方案
以下所示的解決方案中的函數(shù)定義在untDataBase單元中TAdoConn類的方法中。
號(hào) | 簡(jiǎn)述 | Access語法 | SqlServer語法 | Oracle語法 | DB2語法 | 解決方案 |
01 | 系統(tǒng)時(shí)間 | 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 | 字段類型轉(zhuǎn)換 | 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語句函數(shù) | Like ‘101* | Like ‘101%' |
Like ‘101%' |
GetLikeStr | |
二、Access與SQLSERVER部分相同數(shù)據(jù)庫函數(shù)及關(guān)鍵字列表
1、 函數(shù)
序號(hào) |
簡(jiǎn)述 | |
01 | 記數(shù)函數(shù) |
Count |
02 | 最大值 | Max |
2、 關(guān)鍵字
序號(hào) |
簡(jiǎn)述 | |
01 | Like | |
02 | 連接 | Join |
03 | 判斷空 | Is Null |
三、Access與語句SqlServer的語句語法區(qū)別
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')"中的小括號(hào)("(",")")必須去掉才能執(zhí)行,如下:
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 +'''';
應(yīng)該改為
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 +'''';
該行代碼的檢索條件錯(cuò)誤:應(yīng)該把C.copy_id=C.Copy_id 改為c.copy_id=d.copy_id
注:兩種寫法都能在SQL-SERVER中運(yùn)行,但c.copy_id=C.copy_id在ACCESS中不能運(yùn)行
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中運(yùn)行,但第一種在ACCESS中不能運(yùn)行
4、 Inner Join語句3
SQl server 中可以執(zhí)行以下語句
'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 中能執(zhí)行但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個(gè)函數(shù)“GetDateStr”
7、 最大數(shù)值獲取語句
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中運(yùn)行,但第一種在ACCESS中不能運(yùn)行
但是考慮會(huì)出現(xiàn)Null值以及語句的通用性,可以使用以上的第07個(gè)函數(shù)“GetNullStr”和第09個(gè)函數(shù)“GetConvertStr”來完成字符串向數(shù)字,空值和0數(shù)字的轉(zhuǎn)換:參考GetNextNumStr代碼。
相關(guān)文章
OLEDB和ODBC的區(qū)別(優(yōu)缺點(diǎn))
ODBC是一種連接數(shù)據(jù)庫的開放標(biāo)準(zhǔn),OLEDB(對(duì)象鏈接和嵌入數(shù)據(jù)庫)位于ODBC層與應(yīng)用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的應(yīng)用程序. 你的ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理2012-09-09RBAC簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了RBAC簡(jiǎn)介,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08你也許連刪庫跑路都不會(huì)(delete、drop和truncate刪除數(shù)據(jù))
這篇文章主要給大家介紹了關(guān)于delete、drop和truncate刪除數(shù)據(jù)的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11一個(gè)查詢的SQL語句請(qǐng)教,希望能夠用一條SQL語句得到結(jié)果
一個(gè)查詢的SQL語句請(qǐng)教,希望能夠用一條SQL語句得到結(jié)果...2007-06-06深入解析NoSQL數(shù)據(jù)庫的分布式算法(圖文詳解)
這篇文章主要介紹了深入解析NoSQL數(shù)據(jù)庫的分布式算法,需要的朋友可以參考下2015-12-12SQLServer與Oracle常用函數(shù)實(shí)例對(duì)比匯總
這篇文章主要介紹了SQLServer與Oracle常用函數(shù)對(duì)比,需要的朋友可以參考下2014-06-06