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 :

Contrainte composition de mot


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 47
    Points
    47
    Par défaut Contrainte composition de mot
    Bonjour,
    J'aimerais pouvoir forcer une colonne de type char de l'une des tables de ma base de données Oracle à n'accpeter que les mots se composant exactement de 3 lettres et de 4 chiffres.

    Comment ajouter cette contrainte svp ?

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Regardez du côté des expressions régulières si vous êtes au moins en 10g.

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Regardez du côté des expressions régulières si vous êtes au moins en 10g.
    Merci de ta réponse, mais ca veut dire quoi en 10g ?

    Sinon, je peux me débrouiller avec les expressions régulières, mais c'est quoi la syntaxe pour ca avec SQL stp ?

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Cela veut dire que:
    1. les expression régulières n'existent ni dans Oracle 8 ni Oracle 9
    2. Il faut avoir donc une version Oracle 10g ou 11g

    Pour la syntaxe voir :
    http://download.oracle.com/docs/cd/B...ix.htm#i691974

  5. #5
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Merci, mais le site contient la syntaxe des expressions régulières, moi je parlais de la syntaxe de la requete dans laquelle on fait appel aux exp. régulières

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il faut utiliser REGEXP_LIKE et les fonctions
    • REGEXP_INSTR
    • REGEXP_REPLACE
    • REGEXP_SUBSTR


    Voir SQL Reference http://download.oracle.com/docs/cd/B...b14200/toc.htm

  7. #7
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    Salut Tunisiano,

    Regarde ce petit exemple et teste-le si tu es en Oracle >= 10g.
    Si tu ne comprends pas tout, demande

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    CREATE TABLE MA_TABLE(ID, CHAMP) 
     AS SELECT LEVEL
             , LPAD(TRUNC(DBMS_RANDOM.VALUE(1, 999)), 3, '0') || DBMS_RANDOM.STRING('U', 4)
         FROM DUAL
       CONNECT BY LEVEL <= 10;
     
    INSERT INTO MA_TABLE VALUES (100, '123456');
    INSERT INTO MA_TABLE VALUES (100, 'ABCDEF');
    COMMIT;
     
    ALTER TABLE MA_TABLE ADD CONSTRAINT PK_MA_TABLE PRIMARY KEY(ID) ;
     
    DELETE MA_TABLE WHERE ID = 100;
     
    ALTER TABLE MA_TABLE ADD CONSTRAINT PK_MA_TABLE PRIMARY KEY(ID) ;
     
    INSERT INTO MA_TABLE VALUES (100, '123456');
    INSERT INTO MA_TABLE VALUES (101, 'ABCDEF');
     
    ALTER TABLE MA_TABLE ADD CONSTRAINT CK_FORMAT 
       CHECK (REGEXP_LIKE(CHAMP, '^[[:digit:]]{3}[[:alpha:]]{4}$')) ENABLE NOVALIDATE;
     
    SELECT ID FROM MA_TABLE WHERE NOT REGEXP_LIKE(CHAMP, '^[[:digit:]]{3}[[:alpha:]]{4}$');
     
    DELETE MA_TABLE 
    WHERE ID IN 
         (SELECT ID 
            FROM MA_TABLE WHERE NOT REGEXP_LIKE(CHAMP, '^[[:digit:]]{3}[[:alpha:]]{4}$') 
          );
     
    ALTER TABLE MA_TABLE 
       ENABLE VALIDATE CONSTRAINT CK_FORMAT ;
     
    INSERT INTO MA_TABLE VALUES (100, '123456');
    INSERT INTO MA_TABLE VALUES (101, 'ABCDEF');

  8. #8
    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
    Avec des length, ltrim et rtrim c'est facile à gérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    length(champ) = 7
    AND length(rtrim(champ, '0123456789')) = 3
    AND length(ltrim(lower(champ), 'abcdefghijklmnopqrstuvwxyz')) = 4
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. [TopCased] contrainte {unique} sur une composition
    Par big x dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 03/07/2007, 14h04
  3. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44
  4. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16
  5. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34

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