Postgresql Order By 很奇怪

标签 postgresql

我对 Postgresql 不熟悉。尝试学习它是因为我正在将 Rails 应用程序迁移到 Heroku。

这是一个有关排序问题的示例。

# select name_kr from users order by name_kr;

 name_kr 
---------
 곽철
 김영
 박영
 안준
 양민
 이남
 임유
 정신
 차욱
 강동수
 강상구
 강신용
 강용석
 강지영
 강지원
 강호석

您可能听不懂韩语。但一个奇怪的事情是,它首先显示 2 个音节单词,然后显示 3 个音节单词 - 每个音节都在其组中正确排序。

相关信息如下:

kwanak_development=# show lc_collate;
 lc_collate  
-------------
 en_US.UTF-8
(1 row)

kwanak_development=# show lc_ctype;
  lc_ctype   
-------------
 en_US.UTF-8
(1 row)

我做错了什么?

谢谢。

山姆

其他信息:

我尝试了 order by 的排序规则并得到了一个有趣的结果。

select name_kr from users order by name_kr collate "ko_KR"; => Same as above
select name_kr from users order by name_kr collate "C"; => Correct Result

最佳答案

PostgreSQL 排序规则主要由 PostgreSQL 处理,并且应遵循与 UNIX sort 命令相同的规则。首先要做的就是尝试使用 sort 命令来确定这是否确实是问题所在,或者它是否只是堆栈中更下方某些问题的症状。

如果在相同的区域设置下 sort 没有显示此问题,那么请向 PostgreSQL 团队提交错误(我认为这不太可能,但有可能)。如果它确实显示了问题,那么您需要与您正在使用的标准 C 库的制造商联系。

对于我们这些不熟悉韩语排序的人来说,最后要注意的是,您可能想尝试描述所需的排序,而不仅仅是有问题的排序。

关于Postgresql Order By 很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191848/

相关文章:

PostgreSQL、数字列和 hstore 中的 SUM 和 GROUP

PostgreSQL 在空构造函数数组上失败

sql - Postgresql UNION 花费的时间是运行单个查询的 10 倍

postgresql - 有没有办法用 postgres 导入索引文件?

python - 从 Django 过滤器调用返回的列表的默认顺序是什么?

perl - PostgreSQL 阻塞太多插入

performance - 将 Python 的 Postgres psycopg2 查询性能提高到与 Java 的 JDBC 驱动程序相同的水平

sql - 如果所有外部行都处于非事件状态,则获取行

sql - PostgreSql 从选择返回的 ID 中插入

java - Elastic Beanstalk 上的 Clojure ring 应用程序出现 Postgres 版本错误