PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sắp xếp / đối chiếu / thứ tự không chính xác với khoảng trắng trong Postgresql 9.4

Trên Unix / Linux SE, một chuyên gia thân thiện đã giải thích rằng những gì bạn thấy là cách thích hợp để sắp xếp Unicode. Về cơ bản, tiêu chuẩn đang cố gắng sắp xếp:

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

Bây giờ nếu dấu cách cũng quan trọng như các chữ cái, thì việc sắp xếp không thể tách biệt các cách viết giống hệt nhau của Fred và John. Vì vậy, những gì sẽ xảy ra là nó được sắp xếp đầu tiên mà không có dấu cách. Sau đó, trong lần chuyển thứ hai, các chuỗi giống nhau không có khoảng trắng sẽ được sắp xếp. (Đây là một sự đơn giản hóa, thuật toán thực trông khá phức tạp, chỉ định khoảng trắng, dấu và các ký tự không in được ở nhiều mức độ ưu tiên khác nhau.)

Bạn có thể bỏ qua đối chiếu Unicode bằng cách cài đặt:

export LC_ALL=C

Hoặc trong Postgres bằng cách truyền sang mảng byte để sắp xếp:

order by name::bytea

Hoặc (từ câu trả lời của Lò nung) bằng cách chỉ định C đối chiếu:

order by name collate "C"

Hoặc bằng cách thay đổi đối chiếu mặc định cho cột:

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. Làm cách nào để tạo tiện ích mở rộng postgres bên trong vùng chứa?

  2. Cách current_timestamp () hoạt động trong PostgreSQL

  3. Chuyển từ MySQL sang PostgreSQL - mẹo, thủ thuật và mẹo gì?

  4. Thiết lập môi trường tối ưu cho PostgreSQL

  5. Hướng dẫn về Pgpool cho PostgreSQL:Phần thứ hai