我有一个 9.6.2 版的 postgresql 数据库,编码为 UTF8,排序规则为 en_GB.UTF8。我的一张表有一个仅包含日文平假名字符的字段。问题是通过 SQL (... ORDER BY [field name] ...) 以正常方式对该字段进行排序不会产生预期的(至少对我而言)结果。相反,排序就好像行首先按(字段内容的)长度排序,然后才按字符排序。因此,例如,而不是获取:
あめうえおとこかわりきしひ
如我所料,顺序如下:
きしひあめうえおとこかわり
我错过了什么?
最佳答案
尝试显式设置排序规则 C
?
t=# with a as (select string_to_array('あめ うえ おとこ かわり き し ひ' COLLATE "en_GB.UTF-8",' ') a) select unnest(a) from a order by 1;
unnest
--------
き
し
ひ
あめ
うえ
おとこ
かわり
(7 rows)
t=# with a as (select string_to_array('あめ うえ おとこ かわり き し ひ' COLLATE "C",' ') a) select unnest(a) from a order by 1;
unnest
--------
あめ
うえ
おとこ
かわり
き
し
ひ
(7 rows)
关于postgresql - 在postgresql中对平假名中的日语单词进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745639/