Memesan Nilai NULL Selepas Semua Lain, Kecuali Khas
Apabila mengisih data dalam jadual PostgreSQL yang mengandungi medan pesanan pilihan, cabaran biasa sedang mengendalikan nilai nol. Adalah wajar untuk meletakkan tugasan dengan nilai isihan nol selepas semua yang lain, tetapi berikan keutamaan kepada tugasan dengan nilai isihan khas, seperti -1.
Ini boleh dicapai dengan menggunakan fungsi COALESCE bersama-sama dengan pengendali boolean , khususnya pengendali (TIDAK BERBEZA DARI). Pertanyaan berikut menunjukkan pendekatan ini:
SELECT * FROM tasks ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Cara ia Berfungsi:
Ungkapan (isihan TIDAK BERBEZA DARI -1) dinilai kepada FALSE untuk semua nilai kecuali -1, yang menilai kepada BENAR. Dalam susunan isihan lalai PostgreSQL, nilai NULL diletakkan di tempat terakhir, manakala TRUE ditarafkan lebih tinggi daripada FALSE.
Dengan memasukkan ungkapan ini ke dalam klausa ORDER BY, tugasan dengan nilai isihan -1 diletakkan selepas tugas dengan bukan- nilai isihan nol, manakala tugasan dengan nilai isihan nol diletakkan selepas semua yang lain tugasan.
Nota Tambahan:
Pertanyaan setara alternatif boleh ditulis menggunakan kata kunci DESC:
SELECT * FROM tasks ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
Atas ialah kandungan terperinci Bagaimana untuk Memesan Data PostgreSQL dengan NULLs Last, Kecuali untuk Nilai Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!