Apabila menyusun data dalam jadual pangkalan data dengan medan pengisihan pilihan, adalah perkara biasa untuk meletakkan nilai nol terakhir. Walau bagaimanapun, kadangkala pengecualian diperlukan untuk nilai tertentu. Dalam PostgreSQL, satu keperluan timbul untuk mengisih nilai nol selepas bukan nol, dengan -1 merupakan pengecualian yang sepatutnya datang selepas semua yang lain.
Untuk mencapai ini, penyelesaian mudah dibentangkan sendiri:
SELECT * FROM tasks ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Postgres menganggap nilai boolean sebagai jenis, termasuk NULL. Susunan pengisihan lalainya ialah:
Dalam ungkapan (isih TIDAK BERBEZA DARI -1), keadaan menilai kepada FALSE untuk semua nilai kecuali -1, yang menilai kepada TRUE dan mengisih terakhir. Menggabungkan ini dengan pesanan sekunder dengan mengisih menyusun data seperti yang dikehendaki.
Pertanyaan alternatif yang menghasilkan hasil yang sama ialah:
SELECT * FROM tasks ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
Dengan menggunakan fungsi boolean Postgres dan menggabungkannya dengan ORDER OLEH klausa, ia menjadi mungkin untuk mengendalikan keperluan pengisihan yang kompleks dengan mudah.
Atas ialah kandungan terperinci Bagaimana Mengisih Nulls Last dalam PostgreSQL dengan Pengecualian Nilai Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!