我有这个查询:
SELECT * FROM table ORDER BY label ASC;
Run Code Online (Sandbox Code Playgroud)
由于标签不是英文的,它们没有按正确的顺序排序(以“ö”开头的标签不在底部/末尾)。
因此,我尝试:
SELECT * FROM table ORDER BY label COLLATE "sv-SE" ASC;
SELECT * FROM table ORDER BY label COLLATE "sv_SE" ASC;
Run Code Online (Sandbox Code Playgroud)
这些给出了关于那些不存在的排序规则的错误,这让我感到困惑。
经过一番搜索,我想出了这样做:
SELECT * FROM pg_collation;
Run Code Online (Sandbox Code Playgroud)
这表明它应该是:
sv-SE-x-icu
Run Code Online (Sandbox Code Playgroud)
当我使用该标识符时它起作用了,但是“-x-icu”的东西有什么用?那是怎么回事?我讨厌他们总是不得不弄乱标准的语言环境标识符,所以你永远不能只依赖标准的“language_location”格式。
postgresql collation unicode international-components-unicode