Firebird Documentation IndexGuida sull'uso di NULL nel linguaggio SQL di Firebird → Gli ordinamenti
Firebird Home Firebird Home Indietro: RicercheFirebird Documentation IndexRisali: Guida sull'uso di NULL nel linguaggio SQL di FirebirdAvanti: Le funzioni di aggregazione

Gli ordinamenti

In Firebird 2.0, i NULL sono considerati «precedenti» a qualsiasi altra cosa nell'ordinamento. Di conseguenza vengono prima negli ordinamente ascendenti e ultimi negli ordinamenti discendenti. Questo può essere modificato aggiungendo la direttiva NULLS FIRST oppure NULLS LAST alla clausola ORDER BY.

Nelle versioni precedenti, i NULL erano sempre messi alla fine dell'insieme ordinato, indipendentemente dal fatto che fosse ascendente o discendente. In Firebird 1.0 la storia finiva qui: i NULL sono ultimi in qualsiasi ordinamento, punto. In Firebird 1.5 è stata introdotta la sintassi NULLS FIRST/LAST, per forzarli all'inizio o alla fine.

Per riassumere il tutto:

Tabella 6. Posizionamento dei NULL negli ordinamenti

Ordinamento Posizione dei NULL
Firebird 1 Firebird 1.5 Firebird 2
order by ... [asc] alla fine alla fine all'inizio
order by ... desc alla fine alla fine alla fine
order by ... [asc | desc] nulls first all'inizio all'inizio
order by ... [asc | desc] nulls last alla fine alla fine


Naturalmente è inutile, per quanto corretto, specificare NULLS FIRST nel caso ascendente oppure NULLS LAST in quello discendente con Firebird 2. Lo stesso dicasi per NULLS LAST in qualsiasi ordinamento in Firebird 1.5.

Note

  • Se si richiede un ordinamento dei NULL non default, non verrà utillizzato nessun indice. In Firebird 1.5, questo è il caso dei NULLS FIRST. In 2.0 e successivi, succede con NULLS LAST negli ordinamenti ascendenti e con NULLS FIRST in quelli discendenti.

  • Aprendo un database pre-2.0 con Firebird 2, mostrerà il vecchio comportamento sull'ordinamento dei NULL, cioè alla fine, a meno di esplicito NULLS FIRST. Un ciclo di backup/restore rimette le cose a posto, se la restore viene effettuata con la gbak di Firebird!

  • Firebird 2.0 ha un problema che provoca il fallimento della direttiva NULLS FIRST|LAST in certe circostanze insieme a SELECT DISTINCT. Vedere la lista dei problemi per maggiori dettagli.

Avvertimento

Non si deve essere tentati dal fatto che siccome NULL è la «cosa più piccola» negli ordinamenti prima di Firebird 2, si possa pensare che espressioni come «NULL < 3» possano ora riportare true. No! Usare NULL in questo tipo di espressioni darà sempre risultato NULL.

Indietro: RicercheFirebird Documentation IndexRisali: Guida sull'uso di NULL nel linguaggio SQL di FirebirdAvanti: Le funzioni di aggregazione
Firebird Documentation IndexGuida sull'uso di NULL nel linguaggio SQL di Firebird → Gli ordinamenti