我使用fr_CA.UTF-8创建我的数据库,如下所示:
createdb --encoding=utf-8 --locale=fr_CA.UTF-8 --template=template0 someapp_development
然后我加载样本数据,其中包含重音字符,包括“ÉtudedeMeAndréCaron”和“Zellers inc。”。在法语中,É应该在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 |
答案 0 :(得分:2)
经过一些测试后我的结论(关于Scientific 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=#