我想在MySQL中实现三元条件运算符。我有一张表,其中存在一个字段ID。其值可以为null。我想以这样id
的三元条件格式显示:
select id = id == null ? 0 : id;
在MySQL中可以吗?
Answers:
该文档是您的朋友;您应该阅读它!
它说:
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`
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
更短。
IF
而不是IFNULL
或者COALESCE
因为我正在将数据迁移到其他供应商数据库,并且不想导入非空值,而只是将其解释为一般状态。SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
为我工作。