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

Oracle Discussion :

Contrainte pour String et Code postal


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Contrainte pour String et Code postal
    Allo tout lemonde,

    Je cherche la façon d'ajouter une contrainte pour formatter mon code postal et un champ de type varchar.
    1. Le champ code postal(Varchar)doit être de type LCLCLC (L = lettre et C = chiffre) Exemple H2S4F7.
    faut-il faire un trigger ? si oui comment vérifier les caractères?

    2. Mon champ Varchar devra accepter uniquement des chaines string alphabétiques, est-ce que cette ligne d'instruction est bonne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE typeAdresse
    (
    nom		varchar(10),
     
    CONSTRAINT checkcodePostalMin CHECK (nom BETWEEN 'a' and 'z')
    CONSTRAINT checkcodePostalMaj CHECK (nom BETWEEN 'A' and 'Z')
    )
    aussi y-a-t-il une façon de faire une seule contrainte pour majuscule et minuscule à la fois sur le même champ?

    Merci beaucoup à tout ceux qui pensent à m'aider.

    Hola

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Version des outils ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Contrainte pour String et Code postal
    Oracle version 10g

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> create table t(
      cp varchar2(6) check (regexp_like(cp,'^([[:alpha:]]\d){3}$')), 
      nom varchar2(10) check (regexp_like(nom,'^[[:alpha:]]+$')));
     
    Table created.
     
    SQL> insert into t values ('H2S4F7','abcXXX');
     
    1 row created.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par hola150
    y-a-t-il une façon de faire une seule contrainte pour majuscule et minuscule à la fois sur le même champ?
    Selon votre besoin (qui pour moi n'est pas assez expliqué), vous devriez pouvoir vous en sortir en complétant l'exemple de Laurent avec l'option match_parameter positionnée à 'c'.

    Cf. la doc sur REGEXP_LIKE

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'essayé de créer un tablle de cette façon mais ça ne marche pas. Qu'en pensez-vous?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> CREATE TABLE Membre
      2  (
      3   nom_Membre  VARCHAR(8),
      4   CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
      5   PRIMARY KEY       (nom_Membre)
      6  )
      7  /
     CHECK (regexp_like(nom_Circonscription,'^[[:alpha:]]+$'))),
                                                               *
    ERREUR a la ligne 4 :
    ORA-00922: option erronee ou absente
    J'ai essayé votre exemple et je vois qu'il fonctionne à merveille. Cependant le mien génère ce message d'erreur.

    Qu'en pensez-vous?

    Hola

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Excuse-moi. Bien sur j'avais mis un nom de contrainte avant le check

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> CREATE TABLE Membre
      2  (
      3   nom_Membre  VARCHAR(8),
      4   CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
      5   PRIMARY KEY       (nom_Membre)
      6  )
      7  /
     CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
                                                                                              *
    ERREUR a la ligne 4 :
    ORA-00922: option erronee ou absente

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> CREATE TABLE Membre
    2 (
    3 nom_Membre VARCHAR(8),
    4 CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
    5 PRIMARY KEY (nom_Membre)
    6 )
    7 /
    CONSTRAINT checkNom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
    *
    ERREUR a la ligne 4 :
    ORA-00922: option erronee ou absente
    Tout ce que j'ai essayé ça ne marche pas !!!!

    Meric pour votre aide

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu as une parenthèse droite en trop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE Membre
    (
      nom_Membre VARCHAR(8),
      CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$')),
      PRIMARY KEY (nom_Membre)
    );
     
    Table created.

Discussions similaires

  1. Application pour trouver un code postal
    Par tarrouk007 dans le forum Général Java
    Réponses: 0
    Dernier message: 12/10/2014, 00h32
  2. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 20h00
  3. Pour insérer un code postal ou téléphone
    Par xavhawk dans le forum Word
    Réponses: 4
    Dernier message: 02/01/2008, 14h49
  4. type de colonne pour numéro de tél et code postal
    Par molesqualeux dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/01/2006, 14h19
  5. pb pour la validité d'un code postal
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/12/2005, 11h35

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