SQL Server 2008 對 Transact-SQL 進行深度增強,涵蓋相容性控制、運算子擴展、型別轉換、日期時間、分組聚合、合併操作、相依性追蹤、表值參數、列構造器九大維度,全方位提升開發表達力與效能。
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }; -- 2000/2005/2008
取代 sp_dbcmptlevel,線上切換資料庫行為模式,升級測試零停機。
| 運算子 | 等價展開 | 範例 |
|---|---|---|
| += | @x = @x + 2 | DECLARE @x int = 27; SET @x += 2; -- 29 |
| -=, *=, /=, %= | 算術複合 | |
| &=, ^=, |= | 位元運算複合 |
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Style 參數新語意(二進位/字元互轉專用):
| Style | 行為 | 範例結果 |
|---|---|---|
| 0 (預設) | ASCII ⇄ 二進位 1:1,二進位結果前綴 0x | CONVERT(char(8), 0x4E616D65, 0) → 'Name' |
| 1 | 二進位字串必含 0x 前綴,結果保留 0x | CONVERT(char(8), 0x4E616D65, 1) → '0x4E616D' (截斷) |
| 2 | 二進位字串無 0x,結果無 0x | CONVERT(char(8), 0x4E616D65, 2) → '4E616D65' |

DATEPART(ISO_WEEK, date) 回傳 ISO 8601 週編號(週四所屬年份)

取代不符 ISO 的 WITH ROLLUP/CUBE,支援精確指定分組組合:
-- 等價 WITH CUBE
GROUP BY CUBE(CustName, ProductID)
-- 僅需客戶與產品兩維度小計(不含總計與交叉)
GROUP BY GROUPING SETS(CustName, ProductID)
-- 等價 UNION ALL 兩次 GROUP BY



五大子句:MERGE 目標、USING 來源、ON 比對、WHEN MATCHED/NOT MATCHED [BY TARGET/SOURCE] 動作、OUTPUT 回傳異動明細。
範例:FactBuyingHabits 目標表與 Purchases 來源表同步,匹配更新購買日期,不匹配插入新記錄,$action 回傳 INSERT/UPDATE/DELETE。



新目錄檢視 sys.sql_expression_dependencies、DMF sys.dm_sql_referencing_entities/referenced_entities,支援結構綁定/非綁定物件、四部分命名完整解析。範例:MyProc3 同時參考 MyProc2(同資料庫)與 AdventureWorks.dbo.MyTable(三部分命名),正確回傳伺服器/資料庫/結構描述/實體四層級資訊。
READONLY)LocationTableType → usp_InsertProductionLocation → 批次寫入INSERT INTO dbo.T1 (CustName, ProductID, MadeFrom, Sales)
VALUES ('Jane', 1, 'China', 20.00),
('Jack', 2, 'USA', 10.00);
告別 UNION ALL 或多次 INSERT,標準 SQL 行構造器語法簡潔高效。
這九大增強不只是語法糖,更是將集合思維、標準合規、效能最佳實務內化為語言原生能力。掌握它們,意味著寫出更符合現代 SQL Server 引擎特性的高品質 T-SQL 程式碼。