簡體   English   中英

查詢失敗:編碼“UTF8”的排序規則“numerickn”不存在

[英]Query failed: collation "numerickn" for encoding "UTF8" does not exist

我在 Postgresql (AWS RDS) 表中有一列 (vendor_name),它可以包含字母數字值。 我想對這個專欄進行自然排序。

表中示例數據如下

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"

但是,它給出了以下錯誤,盡管我看到數據庫中存在排序規則。

錯誤:查詢失敗:編碼“UTF8”的排序規則“numerickn”不存在

如果數據庫中存在整理,我不確定為什么它不起作用。 在我的供應商名稱中,數字可以出現在字符串中的任何位置,因此沒有模式。

我找不到為什么它在舞台環境中不工作,而在我的本地環境中卻工作。

最后,我放棄了整理邏輯,並以僅在堆棧溢出中發現的不同方式實現了自然排序。

PostgreSQL ORDER BY 問題-自然排序

我在我的 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}`
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM