1、对于日期字段:
access表示为: select * from Table where postTime =#1981-28-12#
SQLSERVER2000表示为: select * from Table where postTime ='1981-02-12'
2、多表更新语句区别:
select ,update 在对单表操作时都差不多,但多表操作时update语句的区别ACCESS与SQLSERVER中的UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b WHERE a.ID = b.ID;
LEFT JOIN
UPDATE A SET A.CategoryCode=B.CategoryCode FROM [LLP_content] A LEFT JOIN [LLP_Category] B ON A.CategoryId=B.id WHERE ...
同样功能的SQL语句在ACCESS中应该是:
UPDATE Tab1 a,Tab2 b SET a.Name = b.Name WHERE a.ID = b.ID;
UPDATE [LLP_content] A LEFT JOIN [LLP_Category] B ON A.CategoryId=B.id SET A.CategoryCode=B.CategoryCode WHERE ...
即:
ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
更新单表都为: UPDATE table1 set ab='ss',cd=111 where ....
3、as 后面的计算字段区别:
access中可以这样: select a,sum(num) as s_num,s_num*num as all_s_num 即可以把AS后的字段当作一个数据库字段参与计算。
sqlserver 中则为: select a,sum(num) as s_num,sum(num)*num as all_s_num 即不可以把AS后的字段当作一个数据库字段参与计算。
4、true与1=1:
access用 where true表示条件为真 或 where 1=1,
sqlserver用where 1=1表示条件为真
5、判断字段值为空的区别:
普通空: Access和sql server一样 where code is null 或 where code is nol null
条件空:
Access: iif([num] is null,0,[num])
SQLServer: isnull([num],0)
6、条件选择语句区别:
Access: select *,(iif((IsPass=true),'√','×')) as passFlag from [LLP_Category]
SQLServer: select *,(case IsPass when 1 then '√' else '×' end) as passFlag from [LLP_Category]
7、SQL语句截取子串的区别:
access: MID(字段,n1,[n2]),LEFT(字段,n),RIGHT(字段,n)
如:select left(cs1,4)+'-'+cs2 as cs3
SQLServer: SUBSTRING(expression, start, length)
如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + '-' + cs2 as cs3
8、布尔类型的区别:
access: 用“是/否”表示: select * from [Table] where sex=true...
SQLServer:用“bit”表示: selse * from [Table] where sex=1 (或 sex='true')...
9、数据类型转换:
access中用CStr: select CStr(Field) as X from...
SQL Server中用Convert: select Convert(Field) as X from...