我有一项在SQL Server Manager中必须完成的任务。
我有一个数据库和一个名为User
的表。在用户下面有一个名为e-mail
的列。
分配是为该表创建一个影响列电子邮件的新约束。
必须只有一个'@
'和最少一个'.
'
不允许使用任何特殊字符,例如(!
,"
,#
,¤
,%
等。< - 这不包括'@'和'。'
我尝试了一些不同的东西,但似乎无法使其发挥作用。还应该注意到我是初学者。
感谢您的帮助
答案 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