AllesMeins: /MySQL: Standardwert für NULL

Hi,

ist es irgendwie möglich bei einer MySQL-Abfrage einen Standard-Rückgabewert für Felder mit dem Wert "NULL" festzulegen?

Ich möchte nicht einfach in der Tabelle einen Default-Wert festelgen, da der ausgegebene Standard-Wert sich je nach Anwendung ändern kann. Ich möchte aber auch ungern ein ständiges IF(wert = NULL) THAN '---' machen müssen. Gibt es da in MySQL irgendwas, das einfach beim SELECT alle NULL durch z.B.: --- ersetzt?

Marc

  1. n'abend,

    Hi,

    ist es irgendwie möglich bei einer MySQL-Abfrage einen Standard-Rückgabewert für Felder mit dem Wert "NULL" festzulegen?

    nicht, dass ich wüsste.

    Ich möchte nicht einfach in der Tabelle einen Default-Wert festelgen, da der ausgegebene Standard-Wert sich je nach Anwendung ändern kann. Ich möchte aber auch ungern ein ständiges IF(wert = NULL) THAN '---' machen müssen. Gibt es da in MySQL irgendwas, das einfach beim SELECT alle NULL durch z.B.: --- ersetzt?

    Wenn ich dich mal kurz mit der Theorie von Trennung der Daten, Programmlogik und Userinterface belästigen darf, erzähle ich dir, dass du soetwas lieber mit deiner Template-Engine (nach Wahl) löst. Smarty kann solche Default-Values bspw. von Haus aus.

    Solltest du nicht über etwas derart sophisticated verfügen, würde es wohl eine Standardfunktion (siehe folgendes Beispiel) auch tun:

    <?php  
    function defaultize( $value )  
    {  
      return ( $value == NULL )? '---' : $value;  
    }  
    ?>
    

    Deine auszugebenden Variablen wirfst du dann einfach kurz in diese Funktion und dein Problem ist gegessen. Dieses ( expression )? var:var; Konstrukt nennt man übrigens Trinärer Operator

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
    1. Wenn ich dich mal kurz mit der Theorie von Trennung der Daten, Programmlogik und Userinterface belästigen darf, [...]

      Interessanter Aspekt, das Ersetzen von NULL-Werten bspw. durch "Strings der Länge 0" ist tatsächlich eine Datenformatierung und hat somit nicht datenserverseitig zu erfolgen.

  2. echo $begrüßung;

    Gibt es da in MySQL irgendwas, das einfach beim SELECT alle NULL durch z.B.: --- ersetzt?

    Nicht dass mir etwas bekannt wäre. Wenn, dann müsste es ein Parameter im SELECT-Statement sein (Quasi ein Geschwister von DISTINCT) oder ein mit SET zu konfigurierender Wert.

    Ich möchte aber auch ungern ein ständiges IF(wert = NULL) THAN '---' machen müssen.

    Einfacher ginge es sowieso mit IFNULL(wert, ersatz) oder auch COALESCE(wert, ersatz).

    echo "$verabschiedung $name";