Ответ 1
Попробуйте следующее:
select if(Id is null, 0, id) as Id;
Я хочу реализовать тернарный условный оператор в MySQL. У меня есть таблица, в которой существует один идентификатор поля. Его значение может быть нулевым. Я хочу показать 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
, например. IF(expression, true result, false result)
Используйте выражение CASE
, например.
CASE WHEN expression THEN <true result> ELSE <false_result> END
Когда вы проверяете NULL, вы можете использовать функции IFNULL
или COALESCE
, например.
IFNULL(ID, 0)
COALESCE(ID, 0)