Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/01/2008, 18h44   #1
Invité régulier
 
Inscription : avril 2006
Messages : 24
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2006
Messages : 24
Points : 9
Points : 9
Par défaut Pb constraint regexp_like email

Bonjour,

Je ne comprend pas d'ou vient mon erreur

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE CONTACT
   (
    EMAIL CHAR(32)  NULL
   ) ;
 
ALTER TABLE CONTACT
ADD CONSTRAINT CHECK_EMAIL CHECK (REGEXP_LIKE (EMAIL, '^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$'));
 
 
INSERT INTO CONTACT VALUES ('titi@toto.fr');
ERREUR à la ligne 1 :
ORA-02290: violation de contraintes (ETD.CHECK_EMAIL) de vérification
 
INSERT INTO CONTACT VALUES ('titi@fr');
ERREUR à la ligne 1 :
ORA-02290: violation de contraintes (ETD.CHECK_EMAIL) de vérification

Erreur aux deux INSERT, alors que 'titi@toto.fr' devrait accepté.

Pour les tests j'ai utilisé cette requête qui montre que ca a l'air de fonctionner
Code :
SELECT 'Good' FROM dual WHERE REGEXP_LIKE('toto@toto.fr', '^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$');
En vous remerciant par avance, je cherche une alternative ou une correction,
AciDation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 09h44   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Je viens de tester avec succès la requête suivante
Code :
1
2
 
SELECT * FROM demo_customers WHERE regExp_like(cust_email,'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$')
sur le site Apex Oracle en ligne

L'expression pour vérifier le mail je l'ai trouvé ici

Peut être ça aide.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 00h56   #3
Invité régulier
 
Inscription : avril 2006
Messages : 24
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2006
Messages : 24
Points : 9
Points : 9
J'ai résoulu mon problème avec un like ds la contrainte sur l'attribut, mais je souhaite toujours savoir pourquoi ca ne fonctionne pas dans la contrainte !!

L'expression que j'ai mise est bonne, il y a plusieurs façons de faire mais la mienne parrait la plus logique...
AciDation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2008, 19h36   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
C'est bien plus simple que je me suis imaginé (je me suis fait avoir par le regexp_like et j'était parti dans le choux ): le problème c'est le type de donnée de la zone Email, char(32). Il faut utiliser varchar2(32) parce que char(32) implique forcement 32 caractères à comparer!
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 09h50   #5
Invité régulier
 
Inscription : avril 2006
Messages : 24
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2006
Messages : 24
Points : 9
Points : 9
Merci, je n'y avais vmt pas pensé, au moins je ferais pas 2 fois cette bêtise
AciDation est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web