SQLServer数据库兼容性问题

2020/9/11
SQLServer数据库兼容性问题 - Powered by MinDoc
SQLServer数据库兼容性问题
SQLServer 2012高版本数据库中 NOLOCK加表别名,写法支持如下两种:
SQLServer 2005低版本数据库中 NOLOCK 加表别名,写法如下:
SQLServer 2012高版本数据库,批量插入支持如下写法:
SQLServer 2005低版本数据库中, 批量插入写法需要改为
1. NOLOCK 别名问题
1.1 高版本写法
SELECT s.* FROM SKU (NOLOCK) s WHERE s.SKU = '10000075'
SELECT s.* FROM SKU s (NOLOCK) WHERE s.SKU = '10000075'
1.2 低版本写法
SELECT s.* FROM SKU s (NOLOCK) WHERE s.SKU = '10000075'
2. 批量插入问题
2.1 高版本写法
INSERT INTO SKU (SKU, sDesc)
values ('10000075', '徽章'),
('10000076', '徽章2');
2.2 低版本写法
INSERT INTO SKU (SKU, sDesc)values ('10000075', '徽章');
INSERT INTO SKU (SKU, sDesc)values ('10000076', '徽章2');
3. 字符串拼接函数Concat
3.1 高版本写法2020/9/11
SQLServer数据库兼容性问题 - Powered by MinDoc
SQLServer 2012高版本数据库,字符串拼接支持函数concat, 如下写法:
SQLServer 2005低版本数据库中,字符串拼接直接使用 ‘+’ 代替concat函数, 写法需要改为:
SQLServer 2012高版本数据库,字符串拼接支持函数is NULL, 如下写法:
SQLServer 2005低版本数据库中,字符串拼接直接使用 ISNULL 代替, 写法需要改为:
SQLServer 2012高版本数据库,字符串拼接支持函数IFF, 如下写法:
SELECT concat(SKU,DESC) FROM SKU
3.2 低版本写法
SELECT SKU+DESC FROM SKU
4. iS NULL 函数判断
4.1 高版本写法
SELECT SKU,DESC FROM SKU WHERE DESC is NULL
4.2 低版本写法
SELECT SKU,DESC FROM SKU WHERE DESC ISNULL(DESC,'')= ''
5. IIF 函数判断
5.1 高版本写法
SELECT SKU, DESC, IIF(ISNULL(updatedTime, '') = '', GETDATE(), updatedTime) F
ROM SKU
5.2 低版本写法
SELECT SKU, DESC,case when ISNULL(updatedTime, '') = '' then GETDATE() else
updatedTime end FROM SKU
6. 中文空格问题2020/9/11
SQLServer数据库兼容性问题 - Powered by MinDoc
SQLServer 2012高版本数据库中如果SQL中含有 中文空格会忽略, 但是在SQLServer 2005低版本数
据库中, 会抛出语法错误。
例如: ‘ ‘ 附近语法错误
因数据库屈臣氏环境数据版本的不一致,存在SQLServer 2005,2008,2012,2016等多个数据库版本, 需
要做数据库版本的向下兼容处理,SQL写法都需要改为低版本数据库写法。
总结2020/9/11
SQLServer数据库兼容性问题 - Powered by MinDoc
posted @ 2020-09-14 15:34  Z-Q  阅读(1004)  评论(1编辑  收藏  举报