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

Postgresql排序语言特定字符(整理)

发布时间:2020-12-13 16:34:25 所属栏目:百科 来源:网络整理
导读:我作为一个语言的发言者,有几个非常见的字符,如?ü??,认为如果我创建一个允许用户将爱沙尼亚语内容保存到数据库的应用程序,那么这个应用程序也应该能够根据语言设定. 此外,作为一个非常小的语言的矛,像爱沙尼亚语一样,必须考虑,其他人可能会使用该应用程序并
我作为一个语言的发言者,有几个非常见的字符,如?ü??,认为如果我创建一个允许用户将爱沙尼亚语内容保存到数据库的应用程序,那么这个应用程序也应该能够根据语言设定.

此外,作为一个非常小的语言的矛,像爱沙尼亚语一样,必须考虑,其他人可能会使用该应用程序并希望用他们的语言进行排序.几种欧洲语言也有自己的特殊字符组合.

更糟糕的是,如果你把俄语等语言包括在内 – 它们的角色完全不同.

既然我知道django网站可以很好地显示所有这些特殊字符,我只担心排序,这是在数据库级别.那么我怎样才能确保从数据库中读取对象并将其分类为正确的语言特定顺序.

示例案例:
如果我使用utf8编码和默认排序规则(英语utf8)创建数据库,那么表包含值

alan
oskar
?len
?lan
?skar

将被排序(通过“从测试顺序中选择*由nimi asc;”)到:

alan
?lan
?len
oskar
?skar

哪个不对.如果我使用POSIX排序规则创建数据库,则相同的查询结果为:

alan
oskar
?lan
?len
?skar

这个SEEMS是正确的,如果你把更多的名字(?lan,?lan)扔进混合物,那么结果是:

alan
oskar
?lan
?lan
?lan
?len
?skar

因为爱沙尼亚字母表,它们应该是:

alan
oskar
?lan
?lan
?len
?skar
?lan (cause ? is not in estonian alphabet)

我正在使用postgresql 9.1.9,我知道自9.1(http://www.postgresql.org/docs/9.1/interactive/collation.html)以来可以使用归类支持.

那是我应该用的吗?

SELECT nimi COLLATE "et_EE" FROM test ORDER BY nimi ASC;

失败并出现错误错误:用于编码“UTF8”的排序规则“et_EE.utf8”不存在.这是为什么?
我是否必须创建此排序规则或其他内容?
这是要走的路 – 为每个查询指定排序规则,如果我想要正确的顺序结果?

艾伦

编辑:1回答问题:
我的语言环境-a显示:

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
et_EE
et_EE.iso88591
et_EE.utf8
POSIX
zh_CN.utf8
zh_SG.utf8

sudo locale-gen et_EE.UTF-8
[sudo] password for alan: 
Generating locales...
  et_EE.UTF-8... up-to-date
Generation complete.
sudo locale-gen et_EE
Generating locales...
  et_EE.ISO-8859-1... up-to-date
Generation complete.

SQL仍然失败了

编辑2:我想我想通了.我不得不在postgresql中创建排序规则(http://www.postgresql.org/docs/9.1/static/sql-createcollation.html):

CREATE COLLATION "et_EE" (LOCALE = "et_EE.utf8")

所以我想我必须创建那些shell语言环境文件,你告诉我,零323,然后创建排序到数据库然后我都设置.

您可以使用以下方法检查安装的区域
locale -a

如果未列出et_EE,请运行以下命令:

sudo locale-gen et_EE
sudo locale-gen et_EE.UTF-8
sudo update-locale

并再次尝试您的查询.

(编辑:李大同)

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

    推荐文章
      热点阅读