【问题标题】:Case sensitive sorting (lexical sorting) not working PostgreSQL citext type区分大小写的排序(词法排序)不起作用 PostgreSQL citext 类型
【发布时间】:2020-04-29 21:19:55
【问题描述】:

我想在 PostgreSQL 中同时对 citext 类型执行搜索和排序。

select name from employee ORDER BY name ASC;

对于上述查询,我​​得到以下排序顺序:

"Adam"
"balaji"
"Cartus"
"dalal"
"erfan"
"Eric"
"Focus"
"lucus"

有没有办法按以下顺序排序:

"Adam"
"Cartus"
"Eric"
"Focus"
"balaji"
"dalal"
"erfan"
"lucus"

我正在使用 postgres 版本“PostgreSQL 9.4.10,由 Visual C++ build 1800 编译,64 位”。

【问题讨论】:

  • 如果您需要适当的排序规则支持,您应该升级到 Postgres 12,您可以使用 ICU 排序规则来实现这一点。无论如何,9.4 将在 4 周内停止支持,因此您应该已经有了升级计划。

标签: postgresql collation


【解决方案1】:

你可以使用

ORDER BY name::text COLLATE "POSIX"

这会将name 转换为区分大小写的类型并使用二进制排序规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 2020-09-13
    • 2012-06-22
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多