Como faço para fazer lógica booleana em duas colunas no MySQL, uma das quais é um Varchar?

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

  •  05-07-2019
  •  | 
  •  

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!

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top