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

PL/SQL Oracle Discussion :

Combinaisons lettre et chiffres


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut Combinaisons lettre et chiffres
    Salut,

    J'ai un programme que j'ai trouvé sur le net et qui va me lister les combinaisons possibles de 5 caractères alphanumériques, genre :

    00001
    00002
    ...
    00009
    0000A
    0000B
    ...
    ...
    AC01E
    ...
    ...
    ZZZZZ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    FUNCTION TO_BASE_36 (nombre INTEGER) RETURN VARCHAR2 IS
     
      nb        INTEGER;
      res       VARCHAR2(100);
     
    BEGIN
     
        nb    :=  nombre;
     
        WHILE nb >= 36
        LOOP
            res    :=  CHR(MOD(nb,36) + CASE WHEN MOD(nb,36) < 10 THEN 48 ELSE 55 END) || res;
            nb       :=  FLOOR(nb / 36);
        END LOOP;
     
        res :=  CHR(MOD(nb,36) + CASE WHEN MOD(nb,36) < 10 THEN 48 ELSE 55 END) || res;
     
        res :=  LPAD(res, 5, '0');
     
        RETURN res;
     
    END;
    Exemple d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ROWNUM,LPAD(TO_CHAR(ROWNUM), 5, '0'),to_base_36(ROWNUM) FROM dual connect by level < 36*36*36*36;
    Le souci est que je souhaite démarrer les combinaisons par les lettres au lieu des chiffres :

    0000A
    0000B
    ...
    0000Z
    00001
    00002
    ...
    000A0
    000A1
    ...
    AC01E
    ...
    ...
    99999

    J'ai beau essayé mais je trouve pas !!

    Est-ce qu'il y a moyen d'avoir ce résultat ?

    Mercii

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Un peu compliqué cette fonction juste pour faire toutes les combinaisons possibles.
    Un simple SQL suffit

    Sinon, ton exemple est pas très cohérent sur les '0'.
    Tu passes de 0000Z à 00001 et plus loin tu passes de 000A0 à 000A1

    Voici un exemple en SQL (sur 2 positions) qui met les A-Z en premier, puis les 0-9 (donc commence à AA-AZ, A0-A9, BA-BZ, B0-B9)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH W AS (
      SELECT CHR(47 +LEVEL) car FROM dual connect BY LEVEL <= 10
      UNION ALL 
      SELECT CHR(64 + LEVEL) FROM dual connect BY LEVEL <= 26
    )
    SELECT c1.car || c2.car
    FROM W c1, W c2
    ORDER BY CASE WHEN c1.car >= 'A' THEN 0 ELSE 1 END, c1.car,
    				 CASE WHEN c2.car >= 'A' THEN 0 ELSE 1 END, c2.car
    Si tu veux un ordre plus précis, il suffit de jouer avec le order by

    Exemple, pour commencer avec les '0000?' en premier et le '00000' après le '0000Z' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY NVL(LENGTH(LTRIM(c1.car || c2.car, '0')),1), CASE WHEN c1.car >= 'A' ...
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] champ avec lettres et chiffres
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2006, 20h31
  2. Correspondance lettre et chiffre
    Par nellynew dans le forum Access
    Réponses: 8
    Dernier message: 21/09/2006, 15h44
  3. selection chmaps contenant lettres et chiffres
    Par Adren dans le forum Requêtes
    Réponses: 4
    Dernier message: 09/08/2006, 09h50
  4. Réponses: 7
    Dernier message: 20/03/2006, 16h58

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