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