我想在MySQL中实现三元条件运算符。我有一个表,其中存在一个字段id。它的值可能为null。我想以三元条件格式显示id
,如下所示:
select id = id == null ? 0 : id;
在MySQL中是否可能实现?
我想在MySQL中实现三元条件运算符。我有一个表,其中存在一个字段id。它的值可能为null。我想以三元条件格式显示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
。这相当于使用三元条件运算符并将比较的第二个操作数作为比较的主体;它没有使用?
和:
符号也能达到目的,但这并不是什么关键点。
因此,在您的情况下:
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
的意思是,如果id为空,则返回0,否则返回id本身。 - Michael Krelin - hackerIF
而不是 IFNULL
或 COALESCE
,因为我正在将数据迁移到另一个供应商的数据库,并且不想导入非空值,只想将其解释为通用状态。SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
对我有用。 - Adam Elsodaney你可以用两种方式将相同的逻辑实现为三元运算符:
IF
函数,例如 IF(表达式, 当为真时返回值, 当为假时返回值)
使用 CASE
表达式,例如
CASE WHEN expression THEN <true result> ELSE <false_result> END
当你需要检查 NULL 值时,你可以使用 IFNULL
或 COALESCE
函数,例如:IFNULL(ID, 0)
COALESCE(ID, 0)