Transact-SQL (T-SQL) 提供了類似一般程式設計語言的流程控制功能,主要包含 IF...ELSE、BEGIN...END 與 CASE 三大核心命令。掌握這些命令能讓您撰寫出更具邏輯性、彈性的預存程序、觸發器與批次指令碼。
IF <條件表達式>
<命令行或程序塊>
[ELSE
<命令行或程序塊>]
DECLARE @x INT, @y INT, @z INT;
SELECT @x = 1, @y = 2, @z = 3;
IF @x > @y
PRINT 'x > y';
ELSE IF @y > @z
PRINT 'y > z';
ELSE
PRINT 'z > y';
執行結果: z > y
BEGIN
<命令行或程序塊>
END
CASE 運算式提供類似 switch-case 的多條件判斷邏輯,分為「簡單 CASE 運算式」與「搜尋 CASE 運算式」兩種格式。
CASE <運算式>
WHEN <運算式> THEN <運算式>
...
WHEN <運算式> THEN <運算式>
[ELSE <運算式>]
END
依序比較輸入運算式與各 WHEN 子句的運算式,相等則回傳對應 THEN 的結果。
CASE
WHEN <布林運算式> THEN <運算式>
...
WHEN <布林運算式> THEN <運算式>
[ELSE <運算式>]
END
依序評估各 WHEN 子句的布林運算式,第一個為 TRUE 的回傳其 THEN 結果;若無符合且有 ELSE 則回傳 ELSE 結果,否則回傳 NULL。
SELECT
EmployeeID,
Salary,
SalaryLevel = CASE
WHEN Salary >= 100000 THEN '高薪'
WHEN Salary >= 50000 THEN '中薪'
ELSE '基礎薪資'
END
FROM Employees;
BEGIN...END 明確界定程式區塊,避免語意模糊。