PostgreSQL:在文字欄位上做數字排序
如何在 text/varchar 欄位上以數字順序排序(使用 ICU collation)。
當你在 text 或 varchar 欄位上使用 ORDER BY 時,通常會得到這種結果——排序不是按照數字值,而是字串字典序。
若你需要以下結果,可這樣對 text/varchar 欄位做數字排序。
以數字排序改動欄位
CREATE COLLATION numeric (provider = icu, locale = 'en@colNumeric=yes');
ALTER TABLE "your_table" ALTER COLUMN "your_column" type TEXT COLLATE numeric;
更多細節與例子
-- 查看此資料庫中所有 collations
SELECT * FROM pg_collation;
-- 建立新的 collation
CREATE COLLATION your_new_collation_name (provider = icu, locale = 'en@colCaseFirst=upper;colNumeric=yes');
en: locale(可省略)
colCaseFirst: upper | lower | false
colNumeric: yes | no
-- 省略 locale
CREATE COLLATION your_new_collation_name (provider = icu, locale = '@colCaseFirst=upper;colNumeric=yes');
更多詳情:
https://www.postgresql.org/docs/14/collation.html–
https://github.com/unicode-org/cldr/blob/main/common/bcp47/collation.xml關於 Venusafe
Venusafe 為香港企業打造高效能 Web 應用(常使用 Elixir/Phoenix 與 PostgreSQL)。歡迎了解我們的 即時網絡應用,或 聯絡 Venusafe。