【问题标题】:SQL constraint E-MailSQL 约束 E-Mail
【发布时间】:2017-10-19 07:52:29
【问题描述】:

我有一个必须在 SQL Server 管理器中完成的任务。

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

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

必须只有一个“@”,至少一个“.

不允许是任何特殊字符,例如(!"#¤% 等)

我尝试了一些不同的方法,但似乎无法成功。另外应该注意的是我是初学者。

感谢您的帮助

【问题讨论】:

  • 至少显示你的尝试。向我们提出家庭作业问题并期望我们完成所有工作对任何人来说都不是一件好事。还要描述这些尝试是如何不起作用的——它们会产生错误吗?让你插入无效值?防止插入有效值?还有什么?
  • 向我们展示您当前的代码尝试。
  • 我试过这个([e-mail] like '%_@__%.__%')当我尝试输入一封电子邮件时,它说它无法使用,我不知道为什么。

标签: sql sql-server constraints


【解决方案1】:

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

如果表不存在

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

一些被拒绝的输入

some@some.!%#¤com

some@some.!%#com

some@some.%#com

some@some.#com

some@some@com

!some@some@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

【讨论】:

  • 您好,谢谢,但我不明白您写的任何内容 xD 我必须将其添加到约束中,在那里我为表创建一个新约束,而不是像在里面那样写下来查询
  • 我的意思是你可以使用这个方法创建你的表,并且已经有一个电子邮件约束
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2011-04-19
  • 2013-10-05
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多