强制Postgres在排除不区分大小写之前会转换为大写而不是小写?

时间:2013-06-17 22:08:37

标签: postgresql collation uppercase

我尝试从普及中迁移到postgres。普遍存在类似'upper.alt'的东西 - 替代整理。我真的不知道它是如何工作的,但我必须让我的新postgres数据库表现得像这种整理一样普遍。

我使用Postgres 9.2.4和utf-8编码以及LC_COLLATE='Polish_Poland.1250'

1 个答案:

答案 0 :(得分:1)

您可以尝试使用COLLATE“C”进行订购。这将在你的例子中得到你想要的。虽然它有副作用!实际上,所有内容都是根据编码字符的字节值排序的。

WITH x(col) AS (
    VALUES
     ('ABC_AAAAA')
    ,('ABC_BBBBB')
    ,('ABC_ZZZZZ')
    ,('ABCAAAAA')
    ,('ABCBBBBB')
    ,('ABCZZZZZ')
    )
SELECT *
FROM   x
ORDER  BY col COLLATE "C"

Postgres 9.1引入了此选项来更改单个表达式的排序规则(与使用数据库创建时定义的排序规则相对)。 More about collation in the manual here