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

use*_*355 77 mysql conditional-operator

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

select id = id == null ? 0 : id;
Run Code Online (Sandbox Code Playgroud)

在MySQL中有可能吗?

Dew*_*uka 126

试试这个 :

select if(Id is null, 0, id) as Id;
Run Code Online (Sandbox Code Playgroud)


Lig*_*ica 43

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

它说:

IFNULL(expr1,expr2)
Run Code Online (Sandbox Code Playgroud)

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

然后是很多例子.这相当于使用三元条件NULL和比较对象作为第二操作数; 它没有碰巧使用符号?:让你在那里与任何东西都没有关系.

所以,在你的情况下:

SELECT IFNULL(`id`, 0) FROM `table`
Run Code Online (Sandbox Code Playgroud)

如果你急需提供三个操作数(为什么?!),那么切换到IF:

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
Run Code Online (Sandbox Code Playgroud)

  • +1,但回答以下问题:`当ID为NULL的情况下,然后0 ELSE ID END' (2认同)
  • “阅读文档”从来都不是正确的答案。你不只是在与提出问题的人交谈,你还在与未来寻找问题答案的每个人交谈。(此外,作为快速参考,MySQL 的文档“很糟糕”。) (2认同)

a'r*_*a'r 19

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

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

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    
    Run Code Online (Sandbox Code Playgroud)

当您检查NULL时,您可以使用IFNULLCOALESCE函数,例如.

IFNULL(ID, 0)
COALESCE(ID, 0)
Run Code Online (Sandbox Code Playgroud)