2008-10-29 6 views
2

Ceci est la suite de this question.Comment faire de la logique booléenne sur deux colonnes dans MySql, dont une Varchar?

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

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

Note: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 :)

Éditer: Null n'est pas intéressant pour moi pour la valeur de varchar. Je veux seulement savoir si c'est vraiment "none".

Merci d'avance pour votre aide!

Répondre

5

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

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

Bonne chance!

1

Je suppose que vous voulez que la valeur NULL soit false? Essayez (payment_paid IS NULL || payment2_type = "none")

1
Select *, 
     (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
     as paid_in_full 
from payments 
Questions connexes