Commander les valeurs NULL après toutes les autres, sauf les valeurs spéciales
Lors du tri des données dans une table PostgreSQL contenant des champs de tri facultatifs, un défi courant gère les valeurs nulles. Il est souhaitable de placer les tâches avec des valeurs de tri nulles après toutes les autres, mais d'accorder la priorité aux tâches avec une valeur de tri spéciale, telle que -1.
Ceci peut être réalisé en utilisant la fonction COALESCE en conjonction avec des opérateurs booléens. , en particulier l'opérateur (IS NOT DISTINCT FROM). La requête suivante illustre cette approche :
SELECT * FROM tasks ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Comment ça marche :
L'expression (sort IS NOT DISTINCT FROM -1) est évaluée à FALSE pour toutes les valeurs sauf -1, qui est évalué à VRAI. Dans l'ordre de tri par défaut de PostgreSQL, les valeurs NULL sont placées en dernier, tandis que TRUE est classé plus haut que FALSE.
En incorporant cette expression dans la clause ORDER BY, les tâches avec des valeurs de tri de -1 sont positionnées après les tâches avec des valeurs non- valeurs de tri nulles, tandis que les tâches avec des valeurs de tri nulles sont placées après toutes les autres tâches.
Supplémentaire Remarque :
Une requête équivalente alternative peut être écrite à l'aide du mot-clé DESC :
SELECT * FROM tasks ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!