Comment est-ce que je fais la logique booléenne sur deux colonnes dans MySql, dont une est un Varchar?

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

  •  05-07-2019
  •  | 
  •  

Question

C’est la suite de cette question .

Je voudrais combiner trois colonnes en une seule sur un MySql select. Les deux premières colonnes sont booléennes et la troisième est une chaîne, parfois nulle. Cela provoque des résultats étranges:

Select *, (payment1_paid && ((payment2_paid || payment2_type ="none"))) as paid_in_full from payments 

Remarque: payment1_paid est booléen, payment2_paid est booléen, payment2_type est varchar.

Remarque: veuillez ignorer à quel point la structure de cette table est ridicule. Derrière chaque morceau de mauvais code, il y a une longue explication:)

Modifier: Null ne m'intéresse pas pour la valeur varchar. Je veux seulement savoir si c'est vraiment "aucun".

Merci d'avance pour votre aide!

Était-ce utile?

La solution

Si null n'est pas intéressant, alors pour vous:

Select *, 
      (payment1_paid && ((payment2_paid || (payment_type IS NOT NULL && payment_type="none"))) 
         as paid_in_full 
from payments

Bonne chance!

Autres conseils

Je suppose que vous voulez que NULL soit faux? Essayez (payment_paid IS NULL || payment2_type = "aucun")

Select *, 
      (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
         as paid_in_full 
from payments
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top