IF() 函數 (SQL IF() Function)
IF() 函數用於根據條件返回不同的值,類似程式語言中的三元運算子。
MySQL IF() 語法
IF(condition, value_if_true, value_if_false)
當 condition 為真時返回 value_if_true,否則返回 value_if_false。
MySQL IF() 用法範例 (Example)
假設我們有一個 products 資料表:
| P_Id | P_Name | Stock |
|---|---|---|
| 1 | LCD | 100 |
| 2 | CPU | 0 |
| 3 | RAM | 50 |
我們可以用 IF() 來標示庫存狀態:
SELECT P_Name, Stock,
IF(Stock > 0, '有庫存', '已售完') AS Status
FROM products;
查詢結果:
| P_Name | Stock | Status |
|---|---|---|
| LCD | 100 | 有庫存 |
| CPU | 0 | 已售完 |
| RAM | 50 | 有庫存 |
巢狀 IF()
IF() 函數可以巢狀使用來處理多重條件:
SELECT P_Name, Stock,
IF(Stock > 50, '充足',
IF(Stock > 0, '偏低', '已售完')) AS Status
FROM products;
查詢結果:
| P_Name | Stock | Status |
|---|---|---|
| LCD | 100 | 充足 |
| CPU | 0 | 已售完 |
| RAM | 50 | 偏低 |
對於複雜的多重條件判斷,建議改用 CASE 語法,可讀性會更好。
SQL Server 的 IIF()
SQL Server 2012 以後版本提供 IIF() 函數,用法與 MySQL 的 IF() 相同:
SELECT P_Name, IIF(Stock > 0, '有庫存', '已售完') AS Status
FROM products;
SQL Server 的 IF...ELSE
SQL Server 也有用於流程控制的 IF...ELSE 語句,用於預存程序或批次處理中:
IF condition
BEGIN
-- 條件為真時執行的語句
END
ELSE
BEGIN
-- 條件為假時執行的語句
END