2011-06-28 15 views
2

にアクセント記号を注文:問題私はこのようなfr_CA.UTF-8を使用して、自分のデータベースを作成するのPostgreSQL 8.4

createdb --encoding=utf-8 --locale=fr_CA.UTF-8 --template=template0 someapp_development 

それから私は「エチュード・デ・ミーアンドレ・キャノン」などのアクセント付き文字が含まれているサンプルデータを、ロードし、 "Zellers inc。"フランス語では、EがZの前に照合/ソートしなければならないので、私は、次のステートメントを期待:

SELECT fullname FROM addressees ORDER BY LOWER(fullname) 

Zの前にÉを返すために、残念ながら、これはそうではありません。

# select fullname from addressees where party_id in (36, 618, 1264, 2481, 4473) order by lower(fullname); 
       fullname     
------------------------------------------- 
VRV Express inc. [4473] 
Vêtements S.P. Apparels inc. (Les) [2481] 
Zellers inc. (Galeries Orford) [1264] 
Étude de Me André Caron [618] 
Étude de Me Richard Drapeau [36] 

お知らせさらにVRVはVêtementsの前にあった。私はどこかで誤解していたに違いない。いくつかのより多くの情報:

$ psql someapp_development 
psql (8.4.4, server 8.4.3) 

$ psql --list 
              List of databases 
      Name   | Owner | Encoding | Collation | Ctype | Access privileges 
---------------------------+-----------+----------+-------------+-------------+----------------------- 
meetphil_development  | francois | UTF8  | fr_CA.UTF-8 | fr_CA.UTF-8 | 
+1

私は読んだことがあるのhttp:/ /stackoverflow.com/questions/1659158/converting-accented-characters-in-postgresqlそれは基本的に同じ問題ですか? –

+0

8.4以降、多くの作業が照合されているので、テストサーバーでPostgres 9.0または9.1ベータ版を試してみてください。実際、このバージョンのこのトピックについては、ドキュメント全体を1ページ追加したので、9.1で動作することになる99%です。 –

+0

今は9.1を取得できませんが、9.0.4では問題が解決されません。 –

答えて

2

(科学のLinux 6.0上のPostgres 8.4.7)いくつかのテストの後に私の結論それはおそらくシステムfr_CAとロケールのバグだです:

-bash-4.1$ psql 
psql (8.4.7) 
Saisissez « help » pour l'aide. 

postgres=# show lc_collate ; 
lc_collate 
------------ 
fr_CA.utf8 
(1 ligne) 

postgres=# create table addressees (party_id serial primary key, fullname text); 
NOTICE: CREATE TABLE créera des séquences implicites « addressees_party_id_seq » pour la colonne serial « addressees.party_id » 
NOTICE: CREATE TABLE/PRIMARY KEY créera un index implicite « addressees_pkey » pour la table « addressees » 
CREATE TABLE 
postgres=# insert into addressees (fullname) values ('VRV Express inc. [4473]'),('Vêtements S.P. Apparels inc. (Les) [2481]'),('Zellers inc. (Galeries Orford) [1264]'), ('Étude de Me André Caron [618]'),('Étude de Me Richard Drapeau [36]'); 
INSERT 0 5 
postgres=# select * from addressees order by lower(fullname); 
party_id |     fullname 
----------+------------------------------------------- 
     4 | Étude de Me André Caron [618] 
     5 | Étude de Me Richard Drapeau [36] 
     2 | Vêtements S.P. Apparels inc. (Les) [2481] 
     1 | VRV Express inc. [4473] 
     3 | Zellers inc. (Galeries Orford) [1264] 
(5 lignes) 

postgres=# 
+0

私はMac OS Xを使用しています。Linuxでいくつかのテストを行い、問題が解決したかどうかを確認します。 –

+0

Ubuntu 11.04 NattyでPostgreSQL 8.4のEC2インスタンスを起動しました。en_US.UTF-8照合を使用してデータベースを作成したにもかかわらず、期待通りのものでした。私はfr_CA.UTF-8ロケールを使ってテストを行いました。ポインタありがとう! –

関連する問題