#1 Thu 17 June 2021 09:00
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 320
Comportement étrange order by
Bonjour,
je suis surpris du retour de la requete suivante :
Code:
SELECT intitule_formation FROM listes_fonctionnelles.ref_formation_diplome ORDER BY intitule_formation
qui appelle une colonne de texte et dont une partie du résultat est le suivant :
Code:
"BTSA Génie des équipements agricoles (GDEA)" "BTSA Gestion et maîtrise de l'eau" "BTSA Gestion et maîtrise de l'eau (GEMEAU)" "BTSA Gestion et protection de la nature (GPN)" "BTSA Gestion forestière" "BTS Aménagement finition" "BTSA Productions animales" "BTS Architectures en métal : conception et réalisation" "BTSA Sciences et technologies des aliments (STA) Aliments et processus technologiques" "BTSA Sciences et technologies des aliments (STA) Produits laitiers" "BTS Assistance technique d'ingénieur (ATI)" "BTS Assurance" "BTSA Technico-commercial" "BTSA Technico-commercial option animaux d'élevage et de compagnie"
Comme vous pouvez le constater le tri n'est pas bon, BTSA et BTS A étant confondu. Je remarque aussi le même problème sur BPA et BP A. L'espace ne semble donc pas être reconnu.
Avez vous des explications sur le pourquoi de cette confusion?
Merci d'avance pour vos retours
Dernière modification par tevrard (Thu 17 June 2021 09:00)
Hors ligne
#2 Thu 17 June 2021 09:36
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: Comportement étrange order by
Bonjour,
Ca peut etre un classement normal (cf: https://stackoverflow.com/questions/345 … resql-9-4)
Quelle est votre version de PG ? quel est le type de la colonne ?
La doc: https://www.postgresql.org/docs/14/collation.html
Nicolas
Hors ligne
#3 Thu 17 June 2021 10:31
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 320
Re: Comportement étrange order by
Bonjour et merci Monsieur Ribot,
La version de Pg est une 9.1. la colonne est une colonne en character varying encodée en UTF-8
Hors ligne
#4 Sun 20 June 2021 20:58
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: Comportement étrange order by
Salut,
réponse ici : https://stackoverflow.com/questions/345 … gresql-9-4
La collation de votre colonne intitule_formation doit être UNICODE, et l'ordre des chaines UNICODE n'est pas exactement l'ordre lexicographique.
Donc vous pouvez spécifier la collaction C dans votre requête :
Code:
SELECT intitule_formation FROM listes_fonctionnelles.ref_formation_diplome ORDER BY intitule_formation collate "C" ;
ou changer la collation par défaut de votre colonne :
Code:
alter table listes_fonctionnelles.ref_formation_diplome alter intitule_formation type text collate "C";
ou changer la collation par défaut de votre base de données,mais je pense que ca implique de recréer votre base de données.
Dernière modification par tumasgiu (Sun 20 June 2021 20:58)
Hors ligne