Kalle_B: ORDER: NULL soll hinten stehen

Hallöle,

mySQL 4

habe Datensätze mit einem Nachfass-Datum, das auch NULL sein darf.

Nun möchte ich die Sätze nach Datum sortieren. Die ohne Datum sollen aber hinten stehen.

Gibt es ein ORDER, bei dem NULL zum größten Wert erklärt wird?

Gruß, Kalle

  1. Hallo Kalle,

    mySQL 4

    Du meinst MySQL 4.1.9? *g*

    Nun möchte ich die Sätze nach Datum sortieren. Die ohne Datum sollen aber hinten stehen.

    Gibt es ein ORDER, bei dem NULL zum größten Wert erklärt wird?

    Füge eine berechnete Spalte mit ISNULL() hinzu:

      
    SELECT  
        <sonstige Spalten>,  
        datumsspalte,  
        -- ISNULL liefert 1 bei NULL-Werten in der Datumsspalte  
        -- und 0 bei vorhandenen Datumswerte  
        [link:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#id3033485@title=ISNULL](datumsspalte) AS sortierung  
        -- sortiere zuerst nach der berechneten Spalte aufsteigend,  
        -- so kommen die Datensätze mit den NULL-Werten automatisch ans Ende  
    ORDER BY sortierung, datumsspalte
    

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Füge eine berechnete Spalte mit ISNULL() hinzu

      Das klappt einwandfrei, danke.

      Allerdings - wenn ich ein Datum wieder löschen will, geht es nicht auf NULL zurück, sondern auf 0000-00-00, trotz Felddefinition

      nachfass date default NULL,

      versucht habe ich

      set ... nachfass = 'NULL'

      und

      set ... nachfass = ''

      Hast du da noch einen Tipp?

      Gruß, Kalle

      1. Hallo Kalle,

        Das klappt einwandfrei, danke.

        prima. Freut mich.

        Allerdings - wenn ich ein Datum wieder löschen will, geht es nicht auf NULL zurück, sondern auf 0000-00-00, trotz Felddefinition

        nachfass date default NULL,

        Das wirkt nur beim INSERT.

        versucht habe ich

        set ... nachfass = 'NULL'

        Hier versuchst Du den Wert auf die Zeichenkette 'NULL' zu setzen ...

        set ... nachfass = ''

        ... und hier auf die leere Zeichenkette. Beides ist nicht NULL. Auch die Zahl 0 ist nicht NULL. Ganz einfach

        SET nachfass = [link:http://dev.mysql.com/doc/refman/5.0/en/null-values.html@title=NULL]

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          SET nachfass = [link:http://dev.mysql.com/doc/refman/5.0/en/null-values.html@title=NULL]

          Danke, klappt.

          Gruß, Kalle