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

问题描述 投票:0回答:3

我想在MySQL中实现三元条件运算符。我有一张表,其中存在一个字段 id。它的值可能为空。我想以三元条件格式显示

id
,如下所示:

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

在 MySQL 中可以吗?

mysql conditional-operator
3个回答
194
投票

试试这个:

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

61
投票

文档是你的朋友;你应该读它!

它说:

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`

27
投票

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

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

    CASE
    表达式,例如。

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

当您检查 NULL 时,您可以使用

IFNULL
COALESCE
函数,例如。

IFNULL(ID, 0)
COALESCE(ID, 0)
© www.soinside.com 2019 - 2024. All rights reserved.