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

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

贊助商鏈接:

主站蜘蛛池模板: 石楼县| 邯郸市| 泊头市| 湘阴县| 阿拉善左旗| 兴和县| 东宁县| 芦山县| 闽清县| 福鼎市| 涟源市| 阿拉善盟| 孟津县| 牙克石市| 安乡县| 无极县| 垦利县| 子长县| 巨鹿县| 黄山市| 桃江县| 百色市| 夹江县| 九龙城区| 崇礼县| 扎兰屯市| 咸宁市| 宜阳县| 尼勒克县| 竹北市| 郴州市| 沭阳县| 柯坪县| 新田县| 澳门| 武功县| 长春市| 威宁| 洛宁县| 喜德县| 新津县|