正在将数据库从Oracle迁移到Postgres。我正在尝试实现应用程序中的排序行为,其中需要将以数字开头的字母数字标签放在字母后面(在下面的示例中进行说明)。
我在Postgres中尝试了法语排序规则,但是无法达到使用NLS_SORT "french"
在Oracle中获得的相同结果。
发布Oracle查询,我需要一个Postgres中的等效项,该等效项可以在DB中设置一次,以便应用程序以后使用它。
Oracle:
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"
正在将数据库从Oracle迁移到Postgres。我正在尝试实现应用程序中的排序行为,在该行为中,需要在字母后面加上数字开头的字母数字标签(在...
您可以通过创建自定义ICU排序规则(可从PostgreSQL v10开始使用)来解决此问题,该排序规则对大于拉丁字符的数字进行排序: