2011-12-14 172 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)