IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

select max sur champ alphanumérique ?


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Par défaut select max sur champ alphanumérique ?
    Bonjour,
    j'ai une colonne XXX Alphanumérique Varchar2, dans la table maTable.
    Je souhaite avoir le max des valeur numériques de cette colonne

    Select max(to_number(XXX)) from maTable
    where ?????


    Que mettre dans la clause where (en évitant les méthodes spécifiques d'Oracle) ??

    merci

  2. #2
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Je ne sais pas s'il y a des solutions propres... . En attendant que quelqu'un la donne, tu peux toujours faire une fonction à toi qui gère les exceptions:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create or replace function my_to_number(aa in varchar2) return number DETERMINISTIC is
     BEGIN
       return (to_number(aa));
      EXCEPTION when others then
       return (null);
     END;
    /
     
     
    select max(my_to_number(XXX)) from maTable;
    Notas:
    - L'option DETERMINISTIC sert à indiquer à oracle que pour une meme entrée la fonction ramène toujours le même résultat. C'est pour l'optimisation et pour pouvoir eventuellement utiliser un index basé sur ta fonction.
    - L'exemple que j'ai donné est simple et ne prend pas en compte les format du to_number, selon la nature de tes données, il serait peut etre interressant de le rajouter.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Par défaut
    malheureusement, je ne suis pas propriétaire du schéma, donc pas de PL/SQL pour moi, uniquement du SQL simple (voire une méthode Oracle, quoique je ne suis pas certain que mon responsable soit d'accord).

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    comment pourrait-on trouver le WHERE à ta place ??? Tu veux filtrer tes lignes selon quel citère ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(col), id FROM tab
    GROUP BY id
    Permet de sélectionner chaque id et la valeur max de col, pas besoin de clause WHERE

Discussions similaires

  1. [AC-2003] SELECT MAX sur un champ de type chaîne
    Par tarnx dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/12/2009, 11h51
  2. incrementation sur champ alphanumérique
    Par pierrot67 dans le forum Débuter
    Réponses: 1
    Dernier message: 21/10/2009, 13h09
  3. Selection conditionnelle sur champ date
    Par Hmiachon dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/04/2008, 15h56
  4. [MySQL] SELECT MAX() sur 2 champs
    Par patguits dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/09/2007, 14h03
  5. [Oracle] Plusieurs select max() sur plusieurs tables
    Par Xavier2701 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/06/2006, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo