Quiero implementar un operador condicional ternario en MySQL. Tengo una tabla en la que existe una identificación de campo. Su valor puede ser nulo. Quiero mostrar iden formato condicional ternario como este:
select id = id == null ? 0 : id;
¿Es posible en MySQL?
mysql
conditional-operator
usuario1086355
fuente
fuente

Respuestas:
Prueba esto :
select if(Id is null, 0, id) as Id;fuente
nullo''y tal vez incluso0. mySQL es un poco duche a vecesLa documentación es tu amiga; ¡deberías leerlo!
Dice:
Y luego muchos ejemplos. Esto es equivalente a usar un condicional ternario con una comparación
NULLay el sujeto de comparación como segundo operando; que no use los símbolos?y:que llegue allí no es realmente relevante para nada.Entonces, en tu caso:
SELECT IFNULL(`id`, 0) FROM `table`Si está desesperado por proporcionar tres operandos explícitamente (¿por qué?), Cambie a
IF:SELECT IF(`id` IS NULL, 0, `id`) FROM `table`fuente
CASE WHEN id IS NULL THEN 0 ELSE id ENDIFNULLes más terso.IFlugar deIFNULLoCOALESCEporque estoy migrando datos a una base de datos de otro proveedor y no quiero importar los valores no nulos, solo interpretarlos como un estado genérico.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_statusfunciona para mi.Hay dos formas de implementar la misma lógica que un operador ternario:
IFfunción, por ejemplo.IF(expression, true result, false result)Utilice la
CASEexpresión, por ejemplo.CASE WHEN expression THEN <true result> ELSE <false_result> ENDCuando está buscando NULL, puede usar las funciones
IFNULLoCOALESCE, por ejemplo.fuente