我想在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`
有两种方法可以实现与三元运算符相同的逻辑:
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)