从事数据库从 Oracle 到 Postgres 的迁移。我正在尝试在我的应用程序中实现排序行为,其中以数字开头的字母数字标签需要出现在字母之后(在下面的示例中进行了说明)。
我在 Postgres 中尝试了法语排序规则,但无法达到我在 Oracle 中使用NLS_SORT "french"
.
发布 Oracle 查询,我需要 Postgres 中的等效项,可以在 DB 中设置一次,以便应用程序以后使用它。
甲骨文:
ALTER SESSION SET NLS_SORT='FRENCH';
ALTER SESSION SET NLS_COMP=LINGUISTIC;
select LABEL from CARBON order by LABEL ;
LABEL
APPLE
BALL
102C
108C
108D
Postgres:
我尝试通过创建french
从pg_collation
条目命名的排序规则fr-FR-x-icu
并使用 pgAdmin GUI 更改现有表列,如下所示:
label character varying(255) COLLATE public.french NOT NULL
不走运,我得到了同样的结果。
select LABEL from CARBON order by LABEL ;
LABEL
102C
108C
108D
APPLE
BALL
我也在 Postgres 中尝试了以下查询,它给出了与上面相同的结果。我在 Postgres 中遗漏了什么吗?
select LABEL from CARBON order by LABEL collate "fr_FR"