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

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

  • Votes
  • Date
  • Date décroissante
  1. 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. Modérateur
      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;
      1. 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.
        1. 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.