PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

tri et caractères spéciaux

Technique - général | tri et caractères spéciaux

Par mathieu le 05/01/2006 - 16:08

Bonjour,

J'ai un problème de tri sur certains colonnes qui contiennent des apostrophes ou d'autre caractères spéciaux.

Par exemple, si j'ai une table qui contient les enregistements suivants dans un champ:
+ la baleine
+ le chat
+ l'avion
+ l'ennui

Quand je fais un tri sur ce champ, j'ai les résultats suivants:
+ la baleine
+ l'avion
+ le chat
+ l'ennui

L'apostrophe n'est en pas vraiement considérée.J'aimerais en fait avoir:
+ l'avion
+ l'ennui
+ la baleine
+ le chat

La version de postgres que j'utilise est la version 7.2.

pg_controldata sur ma base me donne bien la valeur fr_FR pour LC_COLLATE qui je crois est utilisé pour faire le tri (fr_FR = ISO-8859-1).

Mon OS est une debian woody 3.01.

+ Est ce un comportement normal pour vous ?
+ Est ce qu'il y a un moyen d'avoir un comportement plus conforme au français ?

NB: J'ai pensé à utiliser une fonction pour faire le tri dans laquelle je remplacerais le ' par un espace mais d'après la doc postgres je ne peux pas utiliser cette astuce avec des UNION etc...

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour, L'astuce consiste

Jean-Paul Argudo/ = 6 Janvier, 2006 - 14:37

Bonjour,

L'astuce consiste à remplacer le simple quote par un caractère au code ascii inférieur aux lettres. Je vous propose le zéro:


test=> select a from cases order by replace(a,'''','0');
a
------------
l'avion
l'ennui
la baleine
le chat
(4 lignes)

En l'état je ne vois pas trop d'autre solution... Essayez avec votre écriture avec un UNION, si ça ne fonctionne pas, postez à nouveau ici.

Bon courage,

--
Jean-Paul ARGUDO
www.dalibo.com


Merci de votre réponse.

mathieu/ = 3 Octobre, 2006 - 11:07

Merci de votre réponse.

Désolé, ne pas avoir répondu plus tôt mais j'ai travaillé sur d'autres problèmes.

La fonction replace n'existe pas dans ma version de PostgreSQL.

Il semble qu'il y a une solution en créant un cluster PostgreSQL avec --lc-collate=C mais là encore je ne sais pas si cela fonctionne avec ma version.

D'ailleurs, cette solution provient indirectement de Dalibo (client commun).


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.