下边列出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,