Wie mache ich die Boolesche Logik auf zwei Spalten in MySQL, von denen eines ein Varchar ist?

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

  •  05-07-2019
  •  | 
  •  

Frage

Dies ist die Fortsetzung zu diese Frage.

Ich möchte drei Spalten in einem auf einem MySQL -Auswahl kombinieren. Die ersten beiden Spalten sind boolean und die dritte ist eine Zeichenfolge, die manchmal null ist. Dies verursacht seltsame Ergebnisse:

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

Notiz: payment1_paid ist boolean, payment2_paid ist boolean, payment2_type ist varchar.

Notiz: Bitte ignorieren Sie, wie lächerlich die Struktur dieser Tabelle ist. Hinter jedem schlechten Code gibt es eine lange Erklärung :)

Bearbeiten: Null ist für mich für den Varchar -Wert nicht interessant. Ich möchte nur wissen, ob es wirklich "keine" ist.

Vielen Dank im Voraus für Ihre Hilfe!

War es hilfreich?

Lösung

If null is not interesting then for you then:

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

Good luck!

Andere Tipps

I guess you want NULL to be false? Try (payment_paid IS NULL || payment2_type = "none")

Select *, 
      (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
         as paid_in_full 
from payments
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top