¿Cómo hago lógica booleana en dos columnas en MySql, una de las cuales es Varchar?

StackOverflow https://stackoverflow.com/questions/248753

  •  05-07-2019
  •  | 
  •  

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!

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top