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 id
en 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
null
o''
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
NULL
ay 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 END
IFNULL
es más terso.IF
lugar deIFNULL
oCOALESCE
porque 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_status
funciona para mi.Hay dos formas de implementar la misma lógica que un operador ternario:
IF
función, por ejemplo.IF(expression, true result, false result)
Utilice la
CASE
expresión, por ejemplo.CASE WHEN expression THEN <true result> ELSE <false_result> END
Cuando está buscando NULL, puede usar las funciones
IFNULL
oCOALESCE
, por ejemplo.fuente