加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL排序用西里尔“呃”

发布时间:2020-12-13 16:25:07 所属栏目:百科 来源:网络整理
导读:请看看,请: WITH toks AS ( SELECT tok FROM unnest('{ь,а,чь,ча,чль,чла}'::text[]) AS tok ORDER BY tok COLLATE "uk_UA")SELECT ROW_NUMBER() OVER() AS "#",tok FROM toksORDER BY tok COLLATE "uk_UA" PostgreSQL 9.3(ubuntu)给我这个结果
请看看,请:
WITH toks AS (
  SELECT tok
    FROM
      unnest('{ь,а,чь,ча,чль,чла}'::text[]) AS tok
  ORDER BY tok COLLATE "uk_UA"
)
SELECT ROW_NUMBER() OVER() AS "#",tok FROM toks
ORDER BY tok COLLATE "uk_UA"

PostgreSQL 9.3(ubuntu)给我这个结果:

# | tok 
---+-----
 1 | а
 2 | ча
 3 | чль
 4 | чла
 5 | чь
 6 | ь
(6 rows)

这里排列1,2,5和6被正确排序(“ь”在“а”之后),而第3行和第4行被错误排序(“а”后面的“ь”).

所有的信都是西里尔字母,我检查了很多次.

请,怎么了,如何解决.(

更新:这是最近固定在主流的错误:https://sourceware.org/bugzilla/show_bug.cgi?id=17293

UPDATE2:请注意我自己的答案.

PostgreSQL依赖于操作系统的区域设置进行排序.

看看Ubuntu 14.04如何排序该列表:

# locale-gen uk_UA.UTF-8
Generating locales...
  uk_UA.UTF-8... done
Generation complete.

# cat >file
ь
а
чь
ча
чль
чла

# LC_ALL=uk_UA.UTF-8 sort file
а
ча
чль
чла
чь
ь

在评论中,你说这是不同的,但我在这里得到的是完全一样的顺序与您的查询.

事实上,чль来到чла,直觉上是奇怪的,但我不知道西里尔文.

您可以查看/usr/share / i18n / locales / uk_UA来定义区域设置,并将其作为locales软件包的ubuntu错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读