SQL约束电子邮件

时间:2017-10-19 07:52:29

标签: sql sql-server constraints

我有一项在SQL Server Manager中必须完成的任务。

我有一个数据库和一个名为User的表。在用户下面有一个名为e-mail的列。

分配是为该表创建一个影响列电子邮件的新约束。

必须只有一个'@'和最少一个'.'

不允许使用任何特殊字符,例如(!"#¤%等。< - 这不包括'@'和'。'

我尝试了一些不同的东西,但似乎无法使其发挥作用。还应该注意到我是初学者。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

或者,您可以使用约束创建表格,这样可以检查所有给定条件是否满足。 请使用您的

更改表格数据

如果表格不存在

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)
);

一些被拒绝的输入

  

一些@一些。!%#¤com

     

一些@一些。!%#COM

     

一些@一些。%#COM

     

some@some.#com

     

一些@一些@ COM

     

!有的@一些@ COM

等...

某些例外输入

  

some@some.com

     

some222@some.com

     

harry_porter@some.com

     

332@some.com

等...

如果您已有表格,则

 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