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

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

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

在MySQL中可能吗?

尝试这个 :

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

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

它说:

 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` 

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

  1. 使用IFfunction,例如。 IF(expression, true result, false result)
  2. 使用CASEexpression式,例如。

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

当你检查NULL时,你可以使用IFNULLCOALESCE函数,例如。

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