[英]AWS S3 Postgres Extension `ERROR: invalid byte sequence for encoding "UTF8": 0x8b`
[英]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”不存在
如果數據庫中存在整理,我不確定為什么它不起作用。 在我的供應商名稱中,數字可以出現在字符串中的任何位置,因此沒有模式。
我找不到為什么它在舞台環境中不工作,而在我的本地環境中卻工作。
最后,我放棄了整理邏輯,並以僅在堆棧溢出中發現的不同方式實現了自然排序。
我在我的 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.