Como faço para fazer lógica booleana em duas colunas no MySQL, uma das quais é um Varchar?
Pergunta
Esta é a sequência de essa questão.
Eu gostaria de combinar três colunas em uma em uma seleção MySQL. As duas primeiras colunas são booleanas e a terceira é uma corda, que às vezes é nula. Isso causa resultados estranhos:
Select *, (payment1_paid && ((payment2_paid || payment2_type ="none"))) as paid_in_full from payments
Observação: payment1_paid
é booleano, payment2_paid
é booleano, payment2_type
é varchar.
Observação: Por favor, ignore o quão ridícula é a estrutura desta tabela. Atrás de cada código ruim, há uma longa explicação :)
Editar: NULL não é interessante para mim pelo valor Varchar. Eu só quero saber se é realmente "nenhum".
Agradeço antecipadamente por sua ajuda!
Solução
Se NULL não for interessante, então para você então:
Select *,
(payment1_paid && ((payment2_paid || (payment_type IS NOT NULL && payment_type="none")))
as paid_in_full
from payments
Boa sorte!
Outras dicas
Eu acho que você quer que NULL seja falso? Tentar (payment_paid IS NULL || payment2_type = "none")
Select *,
(payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none")))
as paid_in_full
from payments