Tosh: MySQL: Mindestens ein Feld nicht NULL

Hallo,

ich will eine Abfrage schreiben für alle Einträge einer Tabelle, bei denen mindestens eine von vier bestimmten Spalten nicht NULL ist. Eine oder mehrere der Spalten dürfen aber ruhig NULL sein, nur halt nicht alle vier. Da stehe ich gerade etwas auf dem Schlauch und würde mich über einen Denkanstoß freuen.

Viele Grüße
Tosh

  1. Vielleicht so:

    select * from tabelle where spalte1 != null or spalte2 != null or spalte3 != null or spalte4 != null

    oder so:
    select * from tabelle where !(spalte1 is null and spalte2 is null and spalte3 is null and spalte4 is null)

    Gruß
    Oder?
    T-Rex

    1. Hi,

      select * from tabelle where spalte1 != null or spalte2 != null or spalte3 != null or spalte4 != null

      Das auf keinen Fall, da ein Vergleich (und negierter Vergleich) mit NULL immer FALSE ist.

      Bis die Tage,
      Matti

  2. Tach!

    ich will eine Abfrage schreiben für alle Einträge einer Tabelle, bei denen mindestens eine von vier bestimmten Spalten nicht NULL ist.

    COALESCE() liefert von allen Argumenten das erste, das nicht NULL ist. Sind alle NULL, dann ist das Ergebnis auch NULL. Teste das Ergebnis der Funktion mit IS NOT NULL.

    dedlfix.

    1. Tach!

      ich will eine Abfrage schreiben für alle Einträge einer Tabelle, bei denen mindestens eine von vier bestimmten Spalten nicht NULL ist.

      COALESCE() liefert von allen Argumenten das erste, das nicht NULL ist. Sind alle NULL, dann ist das Ergebnis auch NULL. Teste das Ergebnis der Funktion mit IS NOT NULL.

      dedlfix.

      SELECT *  
      FROM `table`  
      WHERE COALESCE( `col1` , `col2` , `col3` , `col4` ) IS NOT NULL
      

      funktioniert perfekt.

      Herzlichen Dank auch an die anderen Schreiber!
      Tosh