382 votes

SQL comment faire null valeurs arrivé dernier lors d’un tri croissant

J’ai une table SQL avec un champ datetime. Le domaine en question peut être null. J’ai une question et je veux les résultats triés croissant par le champ datetime, mais je veux les lignes où le champ datetime a la valeur null à la fin de la liste, pas au début.

Y a-t-il un moyen simple pour y parvenir ?

480voto

RedFilter Points 84190
select MyDate
from MyTable
order by case when MyDate is null then 1 else 0 end, MyDate

218voto

a_horse_with_no_name Points 100769

(Un « peu » tardive, mais cela n’a pas été mentionné du tout)

Vous ne spécifiez pas de votre SGBD.

Dans le standard SQL (et plus modernes SGBD tels que Oracle, PostgreSQL, DB2, Firebird, Apache Derby, HSQLDB et H2), vous pouvez spécifier ou :

Utilisation `` de les trier à la fin :

44voto

Luksurious Points 351

J’ai aussi viens de tombé sur ceci et ce qui suit semble faire l’affaire pour moi, sur MySQL et PostgreSQL :

comme l’a constaté à http://stackoverflow.com/a/7055259/496209

16voto

Vous pouvez utiliser la fonction intégrée pour rechercher les null ou not null, comme ci-dessous. J’ai tester et sa fonctionne très bien.

``

15voto

Gratzy Points 4829
order by coalesce(date-time-field,large date in future)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X