如何在MySQL中实现三元条件运算符

时间:2011-12-14 14:45:56

标签: mysql conditional-operator

我想在MySQL中实现三元条件运算符。我有一个表,其中存在一个字段ID。其值可能为null。我希望以三元条件格式显示id,如下所示:

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

在MySQL可以吗?

3 个答案:

答案 0 :(得分:118)

试试这个:

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

答案 1 :(得分:41)

The documentation是你的朋友;你应该读它!

它说:

IFNULL(expr1,expr2)
     

如果expr1不是NULL,则IFNULL()会返回expr1;否则它会返回   expr2

然后是很多例子。这相当于使用三元条件与NULL比较,比较主题作为第二操作数;它不会使用符号?:来实现这一点与任何事情都没有关系。

所以,在你的情况下:

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

如果您迫切希望明确提供三个操作数(为什么?!),请切换到IF

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

答案 2 :(得分:19)

有两种方法可以实现与三元运算符相同的逻辑:

  1. 使用IF功能,例如。 IF(expression, true result, false result)
  2. 使用CASE表达式,例如。

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    
  3. 当您检查NULL时,您可以使用IFNULLCOALESCE函数,例如。

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