PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Sortir/penyusunan/urutan salah dengan spasi di Postgresql 9.4

Di Unix/Linux SE, seorang ahli yang ramah menjelaskan bahwa apa yang Anda lihat adalah cara yang tepat untuk mengurutkan Unicode. Pada dasarnya, standar mencoba mengurutkan:

di Silva Fred                  di Silva Fred
di Silva John                  diSilva Fred
diSilva Fred                   disílva Fred
diSilva John         ->        di Silva John
disílva Fred                   diSilva John
disílva John                   disílva John

Sekarang jika spasi sama pentingnya dengan huruf, jenis itu tidak dapat memisahkan berbagai ejaan identik dari Fred dan John. Jadi yang terjadi adalah pertama-tama mengurutkan tanpa spasi. Kemudian pada pass kedua, string yang sama tanpa spasi diurutkan. (Ini adalah penyederhanaan, algoritme sebenarnya terlihat cukup rumit, menetapkan spasi putih, aksen, dan karakter yang tidak dapat dicetak di berbagai tingkat prioritas.)

Anda dapat mengabaikan susunan Unicode dengan menyetel:

export LC_ALL=C

Atau di Postgres dengan casting ke array byte untuk menyortir:

order by name::bytea

Atau (dari jawaban Kiln) dengan menentukan C susunan:

order by name collate "C"

Atau dengan mengubah susunan default untuk kolom:

alter table products alter column name type text collate "C";



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengelola Database PostgreSQL Anda Dari ClusterControl CLI

  2. Bagaimana cara membandingkan data antara dua database di PostgreSQL?

  3. Perbaiki “ERROR:  setiap kueri KECUALI harus memiliki jumlah kolom yang sama” di PostgreSQL

  4. MASUKKAN KE ... DARI PILIH ... MENGEMBALIKAN pemetaan id

  5. Dapatkan Hari Terakhir Bulan Ini di PostgreSQL