我想在MySQL中实现三元条件运算符。我有一个表,其中存在一个字段ID。其值可能为null。我希望以三元条件格式显示id
,如下所示:
select id = id == null ? 0 : id;
在MySQL可以吗?
答案 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)
有两种方法可以实现与三元运算符相同的逻辑:
IF
功能,例如。 IF(expression, true result, false result)
使用CASE
表达式,例如。
CASE WHEN expression THEN <true result> ELSE <false_result> END
当您检查NULL时,您可以使用IFNULL
或COALESCE
函数,例如。
IFNULL(ID, 0)
COALESCE(ID, 0)