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