我想在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为我工作。