【问题标题】:Postgresql - Incorrect SortingPostgresql - 不正确的排序
【发布时间】:2025-12-05 01:40:01
【问题描述】:

我在数据库中有一个leads_lead 表,当我使用以下查询时,我得到的结果如下所示。

查询

select name 
from leads_lead as ll 
where ll.branch_id = 14 
order by ll.name desc;

结果

           name            
---------------------------
 testing app 7
 testing app 4
 testing app 22
 testing app 22
 testing app 112
 testing app 10
 testing 9
 testing 6
 testing 5
 testing 3
 testing 2
 Usha Devi Kewat
 Uma kumari tharu
 Tulsiram Yadav
 Triveni Chaudhary
 Testing From APP
 Testing
 Testing
 Testing
 Test Time
 .....
 .....

但是排序不正确。这是 PostgreSQL 中的一些错误吗? 我在 Ubuntu 服务器 20.04.1 中使用 Postgres 13.3,编码是 UTF8。

【问题讨论】:

  • 排序怎么不对?
  • 你可以定义一个自定义函数和order by func(ll.name) desc
  • 您期待哪个订单?

标签: postgresql sorting ubuntu collation


【解决方案1】:

您的数据库似乎是使用C 排序规则创建的,它根据代码点进行排序。

但你可以指定其他排序规则,例如

ORDER BY ll.name COLLATE "en_US" DESC

您必须使用在您的数据库中定义的排序规则,请参阅pg_collation 以获取列表。

【讨论】:

  • 是的。你说的对。我的数据库的排序规则是 C.UTF8。我通过使用 en_US.UTF8 排序规则创建新数据库并将数据迁移到新数据库来解决此问题。谢谢。