如何在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`
有三种方法可以实现与三元运算符相同的逻辑:
- 使用
IF
function,例如。IF(expression, true result, false result)
-
使用
CASE
expression式,例如。CASE WHEN expression THEN <true result> ELSE <false_result> END
当你检查NULL时,你可以使用IFNULL
或COALESCE
函数,例如。
IFNULL(ID, 0) COALESCE(ID, 0)