SQLSERVER各版本语法差异整理(持续更新...)

本文详细梳理了从SQL6.5到SQL2017各版本间的语法差异,重点对比了`=null`与`is null`、JOIN方式、`Dump`、`Load`、`DBCC`命令、字符串处理、排序规则以及`Group by`等功能的变化。在SQL2008以后的版本中,对等比较需使用`is null`,`Order by`规则、`Replace`函数处理Char类型及`Group by`行为都有所调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为工作原因,有幸了解到微软SQLSERVER版本差异,主要从SQL6.5至SQL2017版本的所遇到的差异语法。本人所了解到的,从SQL2008至SQL2017的语法上基本没有差异,至少目前所遇到的情况是从SQL2008升级至SQL2017的数据库不需要做语法的migration。所以差异对比是以SQL2008以下版本与SQL2008版本的对比。
首先先看一下各SQL版本的Compatibility level:
查看数据库的兼容级别与排序规则的SQL:
SELECT compatibility_level, collation_name FROM sys.databases WHERE name=@database
也可以在数据上右键查看属性→Options中查看Compatibility level,SQL2000及以下版本的没法查看属性。以下是SQL2008及SQL2017版本:
SQL2008兼容SQL版本范围
SQL2017兼容SQL版本范围
1.=null VS is null(经确认,SQL6.5至SQL2008返回结果是一致的)
SQL6.5 & SQL2000 版本下where 条件可以使用 where table.column=null或<>null进行筛选数据,但是在SQL2008(可能是从SQL2005开始,因为没有在SQL2005上尝试过,所以不太确定,下同,本文暂时忽略SQL2005版本)无论是=null或<>null条件都是不成立的,需要写成where table.column is null 或 is not null ;

2.(* =、=* ) VS (left join、right join)

SQL6.5 & SQL 2000 SQL2008
select * form A, B where A.ID*=B.AID select * from A left join B on A.ID=B.AID
select * from A, B where B.AID=*A.ID select * from B right join A on A.ID=B.AID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen6167

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值