Maddin: NULL durch 0 ersetzen

Hi,

ich mache auf einer mysql-DB eine Abfrage in dieser ich ein LEFT OUTER JOIN  anwende. Zwangsläufig bekomme ich dann auch NULL-Werte zurück. Wie kann ich sagen, dass Werte mit NULL durch 0 in der Abfrage ersetzt werden können?
Ein Datenbankupdate oder das Verwenden von INNER JOIN ist nicht möglich und wäre in diesem Fall auch nicht angebracht.

  1. Moin!

    ich mache auf einer mysql-DB eine Abfrage in dieser ich ein LEFT OUTER JOIN  anwende. Zwangsläufig bekomme ich dann auch NULL-Werte zurück. Wie kann ich sagen, dass Werte mit NULL durch 0 in der Abfrage ersetzt werden können?

    Wozu brauchst du die 0?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  2. Hallo,

    kennt dein DBMS die Funktion COALESCE?

    Beispiel: SELECT COALESCE(NULL, 0)  ergibt 0

    COALESCE nimmt aus einer Reihe von Argumenten den ersten NICHT NULL Wert.

    Ciao,
    viele Gruesse aus Iowa!
    Frank

    1. Hallo

      kennt dein DBMS die Funktion COALESCE?

      MySQL kennt immerhin bereits seit Version 3.23.3 diese Funktion, siehe Handbuch.
      Wer einen Provider mit noch älterer MySQL-Version hat, dem rate ich dringend zum Wechsel ...

      Freundliche Grüße

      Vinzenz

    2. viele Gruesse aus Iowa!

      Aeh, also, das mit COALESCE, ich glaube das war richtig.

      Ansonsten:
      Viele Gruesse aus Vyskov.

  3. Hallo,

    ich mache auf einer mysql-DB eine Abfrage in dieser ich ein LEFT OUTER JOIN  anwende. Zwangsläufig bekomme ich dann auch NULL-Werte zurück.

    ja, das ist normal und zu erwarten.

    Wie kann ich sagen, dass Werte mit NULL durch 0 in der Abfrage ersetzt werden können?

    Ich verstehe zwar nicht, wozu Du dies benötigst, aber dazu kannst Du die Funktion
    COALESCE() verwenden. COALESCE liefert den ersten von NULL verschiedenen Wert zurück.
    Hier ein Beispiel:

    SELECT  
        a.id,  
        COALESCE(b.id, 0) AS bid  
    FROM a  
    LEFT JOIN b  
    ON a.id = b.id
    

    Ist zu einem Wert von Tabelle a kein passender Eintrag in Tabelle b vorhanden,
    so wird der NULL-Wert, der sich durch den LEFT JOIN ergibt, durch das zweite
    Argument von COALESCE, 0 (die ja von NULL verschieden ist) ersetzt.

    Freundliche Grüße

    Vinzenz