access与mssql通用写法总结

来源:互联网 发布:osi模型网络层相关 编辑:程序博客网 时间:2024/06/15 02:37
首先说一下心得:
一、在处理数据库的时候一定要按标准的写法,否则在转库的时候会带来很大的问题
二、尽量不要用默认值,可以在写入时传值,默认值在sql里占用一定的空间,而且在转换时会很麻烦,需要一个个设置默认值,要养成一个好习惯

注意事项:
一、acc的是/否型和sql的bit型
判断为真:where isok<>0
判断为假:where isok=0
ps:isok=1可用在sql但不能用在acc中,acc用的是isok=-1或者isok (判断为假是 not isok,但不适用于sql)
二、access的文本型和sql的nvarchar型
判断为空:where title='' or title is null
判断非空:where title<>'' and title is not null
ps:只所以用到了null是因为,如果在数据库中复制记录,那么空的文本会是null的无效值,而并非空的字符串
三、时间方面
1、查询或更新
查询通用写法where regtime='"&now()&"'" 如果是acc也可以这个where regtime=#"&now()&"#"
注意,时间一定要包含到外面去,内部时间acc用now(),而sql用getdate()
2、datediff时间比较
ACC:datediff('d',regtime,'"&now()&"')<10
MSSQL(去掉了单引号):datediff(d,regtime,'"&now()&"')<10
3、between时间范围
acc用#包含,mssql用'包含
where addtime between #"&sj1&" 00:00:01# and #"&sj2&" 23:59:59#
where addtime between '"&sj1&" 00:00:01' and '"&sj2&" 23:59:59'
四、备注类型要通过cast(column as varchar)或convert(nvarchar(500),username)来使用
五、查询问题
通常小数据使用like来查询,但在mssql中的ntext字段不能使用replace和like函数,通用的方法是用instr来判断
access可以使用instr,但在mssql中不存在instr,需要改用charindex,注意instr和charindex的使用方法是相反的

总之:在acc和sql并存情况下,要避免时间字段上的问题

最后发一个mssql2000升级mssql2005升级mssql2008的说明,顺向升级的话,直接附加库就直接能用,库是兼容的,逆向降级的话,我倒没试过,大家可以试一下,这个下滑升级网上搜索不了,还是自己试了才知道
0 0