查询失败:编码 "UTF8" 的排序规则 "numerickn" 不存在
Query failed: collation "numerickn" for encoding "UTF8" does not exist
我在 Postgresql (AWS RDS) table 中有一列 (vendor_name),它可以包含字母数字值。我想对这个专栏进行自然排序。
table中的示例数据如下
delta 20221120
delta 20220109
costco delivery 564
costco delivery 561
united 01672519702943
Uber
我在数据库中创建了一个排序规则,如下所示。
CREATE COLLATION IF NOT EXISTS numerickn (provider = icu, locale = 'en-u-kn-true')
如果有人对 UI 网格中的供应商名称列进行排序,我将在查询中动态添加以下子句。
ORDER BY "vendor" COLLATE "numerickn"
然而,它给出了以下错误,尽管我看到数据库中存在排序规则。
Error: Query failed: collation "numerickn" for encoding "UTF8" does
not exist
我不确定如果数据库中存在整理,为什么它不起作用。在我的供应商名称中,数字可以出现在字符串中的任何位置,因此没有模式。
我找不到为什么它在舞台环境中不工作,而在我的本地环境中它可以工作。
最后,我放弃了整理逻辑,以仅在堆栈溢出中发现的不同方式实现了自然排序。
PostgreSQL ORDER BY issue - natural sort
我在 api 代码中使用 Nodejs。我的解决方案如下
qOrderBy = String.raw` ORDER BY ARRAY(
SELECT ROW(
CAST(COALESCE(NULLIF(match[1], ''), '9223372036854775807') AS BIGINT),
match[2]
)
FROM REGEXP_MATCHES(vendor, '(\d*)|(\D*)', 'g')
AS match ) ${sortOrder}`
}
我在 Postgresql (AWS RDS) table 中有一列 (vendor_name),它可以包含字母数字值。我想对这个专栏进行自然排序。
table中的示例数据如下
delta 20221120
delta 20220109
costco delivery 564
costco delivery 561
united 01672519702943
Uber
我在数据库中创建了一个排序规则,如下所示。
CREATE COLLATION IF NOT EXISTS numerickn (provider = icu, locale = 'en-u-kn-true')
如果有人对 UI 网格中的供应商名称列进行排序,我将在查询中动态添加以下子句。
ORDER BY "vendor" COLLATE "numerickn"
然而,它给出了以下错误,尽管我看到数据库中存在排序规则。
Error: Query failed: collation "numerickn" for encoding "UTF8" does not exist
我不确定如果数据库中存在整理,为什么它不起作用。在我的供应商名称中,数字可以出现在字符串中的任何位置,因此没有模式。
我找不到为什么它在舞台环境中不工作,而在我的本地环境中它可以工作。
最后,我放弃了整理逻辑,以仅在堆栈溢出中发现的不同方式实现了自然排序。
PostgreSQL ORDER BY issue - natural sort
我在 api 代码中使用 Nodejs。我的解决方案如下
qOrderBy = String.raw` ORDER BY ARRAY(
SELECT ROW(
CAST(COALESCE(NULLIF(match[1], ''), '9223372036854775807') AS BIGINT),
match[2]
)
FROM REGEXP_MATCHES(vendor, '(\d*)|(\D*)', 'g')
AS match ) ${sortOrder}`
}