Comment est-ce que je fais la logique booléenne sur deux colonnes dans MySql, dont une est un Varchar?
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!
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