Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/08/2012, 09h24   #1
claude
Membre du Club
 
Inscription : avril 2002
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 140
Points : 43
Points : 43
Par défaut Tri numérique avec des caractères associés

bonjour,

10,5,3A,2C,2

et je voudrais avoir ceci :

2,2C,3A,5,10

pouvez-vous m'aider. J'ai essayé LPAD CAST mais je n'y arrive pas.

Merci
claude est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 09h48   #2
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 496
Points : 3 496
Bonjour,

Un SGBD n'est pas forcément ce qu'il y a de mieux pour trier des occurrences dans une seule et même ligne.

(c'est même le bordel complet ..)

Voyez ça côté applicatif
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 09h54   #3
claude
Membre du Club
 
Inscription : avril 2002
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 140
Points : 43
Points : 43
Merci pour votre réponse.
Mais ce n'est pas en une seule ligne. Je représente autrement

10
5
3A
2C
2
et je voudrais avoir ceci :

2
2C
3A
5
10
claude est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 10h28   #4
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 161
Points : 3 496
Points : 3 496
Je ne retrouve pas le poste où on avait déjà traité ce problème, si vous avez le temps de chercher dans ce forum ....


l'idée est de passer par des expressions régulières afin de sortir la partie numérique de votre chaîne de caractère.

http://www.postgresql.org/docs/9.1/s...-matching.html

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
WITH tmp (a) AS 
(SELECT '10'::varchar
union ALL
SELECT '5'
union ALL
SELECT '3A'
union ALL
SELECT '2C'
union ALL
SELECT '2')
 
SELECT substring(a, '[0-9]*')::varchar::numeric, a
FROM tmp
ORDER BY substring(a, '[0-9]*')::varchar::numeric, a
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 11h13   #5
claude
Membre du Club
 
Inscription : avril 2002
Messages : 140
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 140
Points : 43
Points : 43
Je viens de trouver une solution :

Code :
ORDER BY c.acpadrzip,UPPER(c.acpadrcity),UPPER(c.acpaddress),CASE WHEN (TRIM(acpadrnum)>='00000' AND TRIM(acpadrnum)<='99999') THEN TO_NUMBER(acpadrnum,'99999') ELSE 0 END,TRIM(UPPER(acpadrnum)),TRIM(UPPER(acpadrbox));
Merci encore
claude est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 11h42   #6
StringBuilder
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 517
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 34
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 517
Points : 2 381
Points : 2 381
Citation:
y dit qu'y voit pas l'rapport
Sinon, ce que vous cherchez à faire, c'est un tri "naturel" ou "natural sort".

Aucun SGBD à ma connaissance n'implémente ce système de tri.
Et ce n'est pas au SGBD de faire ce genre de tri, qui est purement esthétique.

Vous avez trouvé la solution en faisant un tri par d'autres informations que le libellé initial, et c'est effectivement la bonne solution.
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h56.


 
 
 
 
Partenaires

Hébergement Web