postgresql - 在postgresql中对平假名中的日语单词进行排序

标签 postgresql sorting unicode

我有一个 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/

相关文章:

php - 在运行 MAMP 的 Mac OS X 中安装 PostGresQL 和 MySQL?

ruby-on-rails - 在 ruby​​ on rails 3.2 中实现连接时出错

sql - 数据库设计 - 可空字段

algorithm - 什么是排序算法的稳定性,为什么它很重要?

python - 如何将一串电子邮件地址排序到列表中

python - 如何使用 utf-8 编码将 DataFrame 导出到 Html?

postgresql - 为什么 psql 无法连接到服务器?

java - 使用 java 比较器但具有固定值的对象排序应该在排序列表中的最后一个值中

C# 无法将类型 'string' 隐式转换为 'System.IO.StreamReader

php - 越南字符的正则表达式