[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.

4 réponses

  1. 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
  2. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
  3. 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
  4. 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