回答:
Windowsでは、必要なロケールがすでにインストールされている可能性が高く、Unix とは異なる名前が付けられています。
例として、次のデータベースの作成は、Windows XPのPG9.1で、デフォルトのロケールFrench_France.1252
と、思い出せない追加の言語パックがインストールされていない状態で、私には問題なく動作するようです。
CREATE DATABASE pldb
ENCODING = 'UTF8'
LC_COLLATE = 'Polish'
LC_CTYPE = 'Polish'
TEMPLATE=template0;
また、この新しく作成されたデータベースでこのクエリをUTF8で送信することにより、並べ替え順序の簡単なテストも行います。
select * from (values ('z'), ('ź'), ('ż'), ('s'), ('ś'), ('x'), ('y')) as letters order by 1;
正しい結果を出力するようです:
S
、S
、X
、Y
、Z
、Z
、Z
私が知る限りでは、PostgreSQLのWindowsバージョンがWindowsで提供されていないロケールと照合をサポートするように強制することはできません。PostgreSQLはシステムロケールと照合サポートを使用します。システムがサポートしていない場合は、使用できません。これは時々イライラする制限ですが、それはどのようにです。Windowsインストールでサポートされている適切なエンコードと照合を選択する必要があります。
OS照合名にエイリアスを付けて呼び出すpl_PL.utf8
場合は、でそれを実行できる場合がありますCREATE COLLATION
。
文字セットのサポート、照合順序のサポート、およびpg_collationカタログテーブルを参照してください。
これで解決しようとしている問題は何ですか?
LC_COLLATE
、有効なソートにLC_CTYPE
設定され'pl_PL.utf8'
ています。