成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

Access和SQL Server的語法區別

2010-08-28 10:51:09來源:西部e網作者:

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

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

序號

簡述

Access語法

SqlServer語法

Oracle語法

DB2語法

解決方案

01

系統時間

Date()/Now()

GETDATE()

SYSDATE

 

GetSysTimeStr

02

連接字符串

&

+

||

+

GetConcatStr

03

截取字符串

Mid

SubString

SubStr

SubString

GetSubStr

04

小寫字符串

LCase

Lower

Lower

Lower

GetLowerStr

05

大寫字符串

UCase

Upper

Upper

Upper

GetUpperStr

06

查找字符串

InStr

CharIndex

CharIndex

InStr

GetFindStr

07

替換空值

IIF+IsNull

Coalesce

Nvl

Coalesce

GetNullStr

08

條件取值

IIF

Case+When+Else
有時候可用IsNull

DeCodeCase

IIF

GetCaseStr

09

字段類型轉換

Strvar、….

Convertcast

To_Char,To_Number.

 

GetConvertStr

10

日期字符串

‘2004-10-9’

#2004-10-19#

‘2004-10-9’

 

GetDateStr

11

最大值加1

       

GetNextNumStr

12

Like語句函數

Like ‘101*’

Like ‘101%’

Like ‘101%’

 

GetLikeStr

13

日期比較  DateDiff('d',....... DateDiff(d,......      

14

           

15

           

16

           

17

           

18

           

19

           

二、AccessSQLSERVER部分相同數據庫函數及關鍵字列表

1、 函數

序號

簡述

 

01

記數函數

Count

02

最大值

Max

03

   

04

   

2、 關鍵字

序號

簡述

 

01

 

Like

02

連接

Join

03

判斷空

Is Null

04

   

三、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_idACCESS中不能運行

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代碼

請大家仔細閱讀本文檔和查看untDataBase單元中的TAdoConn提供數據庫跨平臺的函數。

如果大家發現了本文檔或untDataBase單元中的TAdoConn需要擴充,請及時告訴我。

 

原文http://bitplus.bokee.com/4616514.html

關鍵詞:SQLServer

贊助商鏈接:

主站蜘蛛池模板: 栖霞市| 乐平市| 静宁县| 莱芜市| 西盟| 合水县| 新兴县| 大宁县| 黄山市| 凌源市| 庆云县| 遂宁市| 绿春县| 湘阴县| 昆明市| 定日县| 湖州市| 平罗县| 九龙城区| 宣武区| 庄河市| 长沙县| 新河县| 水城县| 临清市| 太仓市| 汤原县| 泰来县| 竹北市| 曲水县| 民丰县| 十堰市| 获嘉县| 垣曲县| 海晏县| 弋阳县| 麦盖提县| 宣城市| 罗定市| 阳高县| 铁岭市|