[SQL] Coupé chaîne dans requête????

GarsDucalvados -  
 Jacques -
Bonjour,
j'ai une table dans une base de donnée qui a une clé primaire composé comme suit :

......
95cl2005
96cl2005
97cl2005
98cl2006
99cl2006
100cl2006
101cl2006
102cl2006
......

J'aimerais savoir si à l'aide d'une requete je pourai recupérer le nombre qu'il y a avant :
cl[année] :
*cl2005
*cl2006
Le but de cette requête serait de récupéré le plus grand nombre. Dans mon exemple ce serait le 102cl2006 le plus grand.
Aidez SVP :-) .
Merci d'avance.
A voir également:

4 réponses

Dingo
 
Salut, en supposant que tu es sur MySQL.

Essaie de cette façon :
SELECT MAX(t1.champ) FROM ta_table AS t1
JOIN ta_table AS t2
WHERE t2.champ REGEXP "[[:alnum:]]+"';


Pas sûr que ça fonctionne, mais à tester :)
1
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
Salut,

comme je suppose que tu es toujours sous ACCESS, je te donne la requête pour récupérer les chiffres avant "cl" :
SELECT left(table1.toto,InStr(Table1.toto,"cl")-1) AS Expr1
FROM Table1;
0
Jacques
 
Bonjour,

Je viens de tester cette variante. Elle fonctionne.
Le principe : Les six derniers caractères sont exclus de la chaine de caractères. Le tri s'exerce donc uniquement sur la valeur numérique qui précède.

SELECT Table1.RéF, Val(Eval(Left([réf],Len([réf])-6))) AS [Critère de tri]
FROM Table1
ORDER BY Val(Eval(Left([réf],Len([réf])-6)));

Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
Hubert REEVES.
0
Jacques
 
Toutes mes excuses, je n'ai pas transmis la requête complète dans mon envoi précédent !

SELECT Max(Val(Eval(Left([réf],Len([réf])-6)))) AS [Critère de tri]
FROM Table1
ORDER BY Max(Val(Eval(Left([réf],Len([réf])-6))));

De la sorte seul le nombre le plus grand est affiché.

Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
Hubert REEVES.
0