MySQL CASE:SQL 語法的 switch 和 if-else

MySQL、MSSQL 的 SQL 語法裡面,想要做 if-else 或 switch,可以怎麼做呢?

MySQL CASE:SQL 語法的 switch 和 if-else

SQL 語法想要做 switch / if-else 可以使用 CASE 來達成

SWITCH 語法

CASE colname
  WHEN 'condition string' THEN 'condition string match'
  WHEN 'condition string2' THEN 'condition string2 match'
  WHEN condition int THEN 'condition int match 3'
  ELSE 'condition not match'
END

IF-ELSE 語法(不能用 ==)

CASE
  WHEN colname > value THEN 'bigger'
  WHER colname <= value2 THEN 'lost'
  ELSE 'tie'
END

CASE 語法可以用在 SELECT、INSERT、UPDATE、DELETE,如下範例:

Switch 寫法範例

select CASE colname
   WHEN 'aa' THEN 'match aa'
   WHEN 'bb' THEN 'match bb'
   WHEN 10   THEN '1'
   WHEN 100  THEN 1000
   ELSE 'ccc'                                                                                                                                               END
FROM table_name;

if / else 寫法範例

SELECT CASE
   WHEN colname > 5 THEN 'yes'
   WHEN colname >= 4 THEN 'no'
   WHEN colname <= 3 THEN 'match 3'
   ELSE 'not match'
END
FROM table_name;

UPDATE switch 寫法範例

UPDATE table_name SET colname = (
    CASE colname2
        WHEN 'AAA' THEN 300
        ELSE 200
    END
)                                                                                                                                                           WHERE id = 1;
  • 註:
    • colname2 = 'AAA', colname = 300
    • colname2 != 'AAA', colname = 200

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料