use*_*355 77 mysql conditional-operator
我想在MySQL中实现三元条件运算符.我有一个表,其中存在一个字段ID.其值可能为null.我想以id
三元条件格式显示如下:
select id = id == null ? 0 : id;
Run Code Online (Sandbox Code Playgroud)
在MySQL中有可能吗?
Lig*_*ica 43
文档是你的朋友; 你应该读它!
它说:
Run Code Online (Sandbox Code Playgroud)IFNULL(expr1,expr2)
如果
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)
a'r*_*a'r 19
有两种方法可以实现与三元运算符相同的逻辑:
IF
功能,例如.IF(expression, true result, false result)
使用CASE
表达式,例如.
CASE WHEN expression THEN <true result> ELSE <false_result> END
Run Code Online (Sandbox Code Playgroud)当您检查NULL时,您可以使用IFNULL
或COALESCE
函数,例如.
IFNULL(ID, 0)
COALESCE(ID, 0)
Run Code Online (Sandbox Code Playgroud)