如何强制 Windows 支持 PostgreSQL 中不支持的 LC_COLLATE 和 LC_TYPE?

mar*_*osh 8 postgresql windows

我全新安装了 PostgreSQL 9.1.x。不幸的是,我发现操作系统不支持LC_COLLATE = 'pl_PL.utf8'LC_CTYPE = 'pl_PL.utf8'. 我在 PostgreSQL 文档中读到:

在所有平台上,都可以使用名为 default、C 和 POSIX 的归类。根据操作系统支持,可能会提供其他排序规则。

然而,是一种强制 Windows 支持该语言环境的方法吗?我的意思是补丁、插件或其他东西。

Dan*_*ité 7

在 Windows 上,可能已经安装了所需的语言环境,只是命名与Unix不同

例如,以下数据库创建似乎对我在 Windows XP 上使用 PG9.1 运行良好,使用其默认语言环境French_France.1252并且没有安装我记得的其他语言包。

CREATE DATABASE pldb
       ENCODING = 'UTF8'
       LC_COLLATE = 'Polish'
       LC_CTYPE = 'Polish'
       TEMPLATE=template0;
Run Code Online (Sandbox Code Playgroud)

此外,通过在这个新创建的数据库中以 UTF8 格式提交此查询来快速测试排序顺序:

select * from (values ('z'), ('?'), ('?'), ('s'), ('?'), ('x'), ('y')) as letters order by 1;
Run Code Online (Sandbox Code Playgroud)

似乎输出正确的结果:

小号

X
Ÿ
ž

?


Cra*_*ger 1

据我所知,您不能强制 Windows 版本的 PostgreSQL 支持 Windows 不提供的区域设置和排序规则。PostgreSQL 使用系统区域设置和排序规则支持。如果系统不支持,则无法使用。有时这是一个令人沮丧的限制,但事实就是如此。您需要选择 Windows 安装支持的合适编码和排序规则。

如果您想为操作系统排序规则名称添加别名并调用它,pl_PL.utf8您可以使用CREATE COLLATION.

请参阅字符集支持排序规则支持pg_collat​​ion目录表。

你想用这个解决什么问题?