首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

MSSQL 基礎教程:SQL 流程控制命令詳解

     編輯:關於SqlServer

Transact-SQL 流程控制命令概述

Transact-SQL (T-SQL) 提供了類似一般程式設計語言的流程控制功能,主要包含 IF...ELSE、BEGIN...END 與 CASE 三大核心命令。掌握這些命令能讓您撰寫出更具邏輯性、彈性的預存程序、觸發器與批次指令碼。

1. IF...ELSE 條件判斷

語法結構

IF <條件表達式>
    <命令行或程序塊>
[ELSE
    <命令行或程序塊>]
  • 條件表達式:結果必須為邏輯值 TRUE 或 FALSE,可由多種運算式組合而成。
  • ELSE 子句:為選用項目,最簡單的 IF 陳述式可僅包含 IF 部分。
  • 執行單位:若未使用程序塊 (BEGIN...END),IF 或 ELSE 僅能控制緊隨其後的單一陳述式。
  • 巢狀限制:T-SQL 允許最多 32 層的 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

2. BEGIN...END 程序塊定義

語法結構

BEGIN
    <命令行或程序塊>
END
  • 用於將多個 T-SQL 陳述式包裝成單一執行單元。
  • 常搭配 IF...ELSE、WHILE 等控制流程陳述式使用。
  • 支援巢狀結構,可在 BEGIN...END 內再定義另一組 BEGIN...END。

3. CASE 條件運算式

CASE 運算式提供類似 switch-case 的多條件判斷邏輯,分為「簡單 CASE 運算式」與「搜尋 CASE 運算式」兩種格式。

格式一:簡單 CASE 運算式

CASE <運算式>
    WHEN <運算式> THEN <運算式>
    ...
    WHEN <運算式> THEN <運算式>
    [ELSE <運算式>]
END

依序比較輸入運算式與各 WHEN 子句的運算式,相等則回傳對應 THEN 的結果。

格式二:搜尋 CASE 運算式

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 明確界定程式區塊,避免語意模糊。
  • 巢狀 IF 過深時,考慮改用 CASE 運算式或拆分為多個預存程序,提升可讀性。
  • CASE 運算式可直接用於 SELECT、WHERE、ORDER BY 等子句,極具彈性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved