¿Cómo hago lógica booleana en dos columnas en MySql, una de las cuales es Varchar?
Pregunta
Esta es la secuela de esta pregunta .
Me gustaría combinar tres columnas en una en una selección de MySql. Las dos primeras columnas son booleanas y la tercera es una cadena, que a veces es nula. Esto causa resultados extraños:
Select *, (payment1_paid && ((payment2_paid || payment2_type ="none"))) as paid_in_full from payments
Nota: payment1_paid
es booleano, payment2_paid
es booleano, payment2_type
es varchar.
Nota: ignora cuán ridícula es la estructura de esta tabla. Detrás de cada fragmento de código incorrecto hay una larga explicación :)
Editar: Null no me interesa por el valor varchar. Solo quiero saber si es realmente " ninguna. & Quot;
¡Gracias de antemano por su ayuda!
Solución
Si nulo no es interesante, entonces para usted:
Select *,
(payment1_paid && ((payment2_paid || (payment_type IS NOT NULL && payment_type="none")))
as paid_in_full
from payments
¡Buena suerte!
Otros consejos
¿Supongo que quieres que NULL sea falso? Pruebe (payment_paid IS NULL || payment2_type = " none ")
Select *,
(payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none")))
as paid_in_full
from payments