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错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |