gpt4 book ai didi

java - postgresql order by desc 对于字符串不起作用

转载 作者:行者123 更新时间:2023-12-01 10:52:20 24 4
gpt4 key购买 nike

在 Mac 上使用 postgresql,我尝试按降序对名称进行排序,但我注意到如果两个名称的第一个字母相同,则在尝试排序时不会检查第二个字母。

例如,假设您有以下字符串:

Amen, Alia, Atis,...etc

理想情况下,它们的顺序应为:

Alia, Amen, Atis,..etc

但是postgresql只检查第一个字母,似乎不检查整个字符串。因此 postgresql 返回的名称顺序是:

Atis, Alia, Amen,..etc 

或者只是以某种随机顺序。我已将数据库排序规则设置为 en_us.utf8。

我尝试使用的简化查询是:

SELECT name 
FROM properties
ORDER BY name;

如何让 postgresql 按整个字符串排序,这可能吗?

更新:当我在pgadmin III中尝试查询时,我发现它产生了相同的结果,我认为这可能与postgreSQL的配置有关。

我的数据库配置是:排序规则和字符类型为:en_CA.UTF-8表空间:pg_default

我在 Mac 上设置的配置有问题吗?

最佳答案

我的猜测是您遇到了排序规则和/或不可打印字符的问题。

您可以按照 http://www.postgresql.org/docs/9.1/static/collation.html 尝试不同的排序规则与:

SELECT name COLLATE "C", name::bytea FROM properties 
LEFT OUTER JOIN observations on properties.id =observations.id order by 1 desc;

您将能够尝试排序规则(第 1 列)并查看 name(第 2 列)中到底存储了什么(十六进制二进制值)。

编辑:找到 this Postgres.app issue 后,我相当有信心您遇到了 OSX 排序规则支持中的错误。要进行确认,您可以尝试使用 sort 在控制台中对相同文本进行排序。

我不知道目前是否存在解决方法,但 PGDG is aware of the problem如果一切顺利,PostgreSQL 9.6 might solve your problem .

关于java - postgresql order by desc 对于字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com