PostgreSQL 排序

Dam*_*mon 3 sql sorting postgresql collation

我在 PostgreSQL 中有一个排序问题,数据如下:

name
-----
@CF
@CG
CD
CE
Run Code Online (Sandbox Code Playgroud)

我用过select name from table order by name,结果如下:

name
-----
CD
CE
@CF
@CE
Run Code Online (Sandbox Code Playgroud)

似乎 Postgres 只是忽略了特殊字符@并对左边的字符串进行了排序。但是,我希望它是这样排序的:

name
-----
@CF
@CG
CD
CE
Run Code Online (Sandbox Code Playgroud)

搜索互联网没有帮助。我希望这里有人可以提出建议。

Cra*_*ger 5

使用PostgreSQL 的整理支持来告诉它你想要一个特定的整理。

鉴于:

CREATE TABLE t AS VALUES ('CD'),('CE'),('@CF'),('@CE');
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法强制按字节排序:

SELECT * FROM t ORDER BY column1 COLLATE "C";
Run Code Online (Sandbox Code Playgroud)

"C"整理是逐字节的排序规则,无视国家的语言规则,编码等