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

Penyortiran peka huruf alfanumerik di postgres

PostgreSQL saya mengurutkan seperti yang Anda inginkan. Cara PostgreSQL membandingkan string ditentukan oleh lokal dan susunan. Saat Anda membuat database menggunakan createdb ada -l pilihan untuk mengatur lokal. Anda juga dapat memeriksa bagaimana konfigurasinya di lingkungan Anda menggunakan psql -l :

[[email protected]]$ psql -l
List of databases
 Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
---------+----------+----------+------------+------------+-----------------------
 mn_test | postgres | UTF8     | pl_PL.UTF8 | pl_PL.UTF8 |

Seperti yang Anda lihat, basis data saya menggunakan susunan bahasa Polandia.

Jika Anda membuat database menggunakan susunan lain maka Anda dapat menggunakan susunan lain dalam kueri seperti:

SELECT * FROM sort_test ORDER BY name COLLATE "C";
SELECT * FROM sort_test ORDER BY name COLLATE "default";
SELECT * FROM sort_test ORDER BY name COLLATE "pl_PL";

Anda dapat membuat daftar koleksi yang tersedia dengan:

SELECT * FROM pg_collation;

DIEDIT:

Oh, saya lupa bahwa 'a11' harus sebelum 'a2'.

Saya tidak berpikir susunan standar dapat menyelesaikan penyortiran alfanumerik. Untuk penyortiran seperti itu, Anda harus membagi string menjadi beberapa bagian seperti pada respons Clodoaldo Neto. Opsi lain yang berguna jika Anda sering harus memesan dengan cara ini adalah memisahkan kolom nama menjadi dua kolom. Anda dapat membuat pemicu di INSERT dan UPDATE yang membagi name ke dalam name_1 dan name_2 lalu:

SELECT name FROM sort_test ORDER BY name_1 COLLATE "en_EN", name_2;

(Saya mengubah susunan dari bahasa Polandia ke bahasa Inggris, Anda harus menggunakan susunan asli Anda untuk mengurutkan huruf seperti aącć dll)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghitung rata-rata pergerakan eksponensial pada postgres?

  2. Postgres FK referensi komposit PK

  3. Bagaimana menghindari banyak sisipan di PostgreSQL

  4. Postgres json_agg menyertakan tajuk kolom - JSON salah?

  5. Bagaimana cara membaca bidang kutipan postgresql dengan npgsql 3.0.0?