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

Sắp xếp không chính xác PostgreSQL

Sắp xếp hành vi cho văn bản (bao gồm charvarchar cũng như text loại) phụ thuộc vào đối chiếu hiện tại ngôn ngữ của bạn.

Xem các câu hỏi liên quan chặt chẽ trước đây:

  • Sắp xếp PostgreSQL
  • https://stackoverflow.com/q/21006868/398670

Nếu bạn muốn sắp xếp đơn giản theo giá trị ASCII, thay vì sắp xếp được bản địa hóa đúng theo quy tắc ngôn ngữ địa phương của bạn, bạn có thể sử dụng COLLATE mệnh đề

select * 
from test
order by title COLLATE "C" ASC

hoặc thay đổi đối chiếu cơ sở dữ liệu trên toàn cầu (yêu cầu kết xuất và tải lại hoặc lập chỉ mục đầy đủ). Trên hệ thống Fedora 19 Linux của mình, tôi nhận được các kết quả sau:

regress=> SHOW lc_collate;
 lc_collate  
-------------
 en_US.UTF-8
(1 row)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title ASC;
 title 
-------
 #
 a
 #a
 a#
 a#a
(5 rows)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title COLLATE "C" ASC;
 title 
-------
 #
 #a
 a
 a#
 a#a
(5 rows)

PostgreSQL sử dụng hỗ trợ đối chiếu của hệ điều hành của bạn, do đó, kết quả có thể thay đổi một chút từ hệ điều hành chủ sang hệ điều hành chủ. Đặc biệt, ít nhất một số phiên bản của Mac OS X đã phá vỡ đáng kể việc xử lý đối chiếu unicode.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thời gian chờ cho các kết nối PostgreSQL nhàn rỗi không?

  2. Điều gì xảy ra với các bản sao khi chèn nhiều hàng?

  3. Cách hiển thị giá trị rỗng khi chạy truy vấn trong psql (PostgreSQL)

  4. CHÈN NHÓM CHỌN THEO:nhiều cột mục tiêu hơn lỗi biểu thức

  5. Trình tự PostgreSQL dựa trên một cột khác