2017-10-19 9 views
-1

J'ai une affectation que je dois faire dans SQL Server Manager. J'ai une base de données et une table nommée User. Sous l'utilisateur, il y a une colonne nommée e-mail.Contrainte SQL E-Mail

L'affectation consiste à créer une nouvelle contrainte sur la table affectant le courrier électronique de la colonne.

Il doit y avoir qu'un seul '@' et un minimum '.'

Il est interdit d'être des caractères spéciaux tels que (!, ", #, ¤, %, etc.) < - ceci n'inclut pas le '@' et le '.'

J'ai essayé des choses différentes mais je n'arrive pas à le faire fonctionner. Aussi, il convient de noter que je suis un débutant.

Merci pour votre aide

+8

Au moins * show * vos tentatives. Déposer une question sur les devoirs et s'attendre à ce que nous fassions tout le travail n'est pas une bonne affaire pour quiconque. Également être descriptif dans la façon dont les tentatives ne fonctionnent pas - génèrent-elles des erreurs? Laissez-vous insérer des valeurs invalides? Empêcher l'insertion de valeurs valides? Autre chose? –

+0

Montrez-nous votre tentative de code actuelle. – jarlh

+0

Ive a essayé ceci ([e-mail] comme '%[email protected]__%.__%') Quand j'essaie de taper un email il dit qu'il ne peut pas être utilisé et je ne sais pas pourquoi. –

Répondre

0

Sinon, vous pouvez créer votre table avec contrainte, comme celui-ci qui va vérifier si toutes les conditions données satisfait. S'il vous plaît modifier les données de table avec votre de

Si la table n'Exist

CREATE TABLE Persons (
ID int NOT NULL, 
LastName varchar(255) NOT NULL, 
FirstName varchar(255), 
Email varchar(255), 
CHECK (len(Email) - len(replace(Email,'@',''))=1 AND len(Email) - 
len(replace(Email,'.',''))=1 AND CHARINDEX('!',Email)!>0 AND 
CHARINDEX('#',Email)!>0 AND CHARINDEX('%',Email)!>0 AND 
CHARINDEX('¤',Email)!>0 AND CHARINDEX('"',Email)!>0) 
); 

Certaines entrées Rejeté

[email protected]!%#¤com

certains @ certains.!% # com

[email protected]%#com

[email protected]#com

certains @ @ certains com

! @ Certains certains @ com

etc ...

Certaines entrées exceptées

[email protected]

[email protected]

[email protected]

[email protected]

etc ....

Si vous avez déjà une table puis

GO 

ALTER TABLE [dbo].[Yourtablename] WITH CHECK ADD Constraint EmailConstraint CHECK (((len([Email])- 
len(replace([Email],'@','')))=(1) AND (len([Email])- 
len(replace([Email],'.','')))=(1) AND charindex('!',[Email])<=(0) AND 
charindex('#',[Email])<=(0) AND charindex('%',[Email])<=(0) AND 
charindex('¤',[Email])<=(0) AND charindex('"',[Email])<=(0))) 
GO 
+0

Bonjour merci, mais je ne comprends rien de ce que vous avez écrit xD Je dois l'ajouter dans la contrainte, où je crée une nouvelle contrainte pour une table, et ne pas écrire tout comme ça dans une requête –

+0

Je veux dire vous peut créer votre table avec déjà une contrainte d'email à ce sujet uisng cette méthode –

+0

S'il vous plaît voir la dernière édition –