2011-12-14 179 views
48

我想在MySQL中實現三元條件運算符。我有一個表中存在一個字段ID。其值可能爲空。我想在三元條件格式顯示id這樣的:如何在MySQL中實現三元條件運算符

select id = id == null ? 0 : id; 

是否有可能在MySQL?

+0

可能重複[你如何在MySQL select語句中編寫條件?](http://stackoverflow.com/questions/1647961/how-do-you-write-a-conditional-in- a-mysql-select-statement) – 2011-12-14 14:54:05

回答

94

試試這個:

select if(Id is null, 0, id) as Id; 
34

The documentation是你的朋友;你應該閱讀它!

它說:

IFNULL(expr1,expr2) 

如果expr1NULLIFNULL()回報expr1;否則返回 expr2

然後很多例子。這相當於使用三元條件,並將NULL與比較對象作爲第二個操作數;它不會發生使用符號?:讓你在那裏沒有真正相關的任何事情。

所以,你的情況:

SELECT IFNULL(`id`, 0) FROM `table` 

如果你絕望明確(爲什麼?)提供了三個操作數,然後切換到IF

SELECT IF(`id` IS NULL, 0, `id`) FROM `table` 
+1

+1,但要回答這個問題:'CASE當id爲NULL那麼0 ELSE ID END` – 2011-12-14 14:48:38

14

有兩種方法可以實現與三元運算符相同的邏輯:

  1. 使用IF函數,例如。 IF(expression, true result, false result)
  2. 使用CASE表達式,例如。

    CASE WHEN expression THEN <true result> ELSE <false_result> END 
    

當你檢查NULL,則可以使用IFNULLCOALESCE功能,例如。

IFNULL(ID, 0) 
COALESCE(ID, 0)