Rumah >pangkalan data >tutorial mysql >Bagaimana Mengisih Nulls Last dalam PostgreSQL dengan Pengecualian Nilai Tertentu?

Bagaimana Mengisih Nulls Last dalam PostgreSQL dengan Pengecualian Nilai Tertentu?

Barbara Streisand
Barbara Streisandasal
2024-12-29 11:44:18519semak imbas

How to Sort Nulls Last in PostgreSQL with a Specific Value Exception?

Isih: Null After All but Special Exception

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:

  • SALAH (0)
  • BENAR (1)
  • NULL

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn