SQL约束电子邮件
我有一个任务,我必须在SQL Server管理器中完成。SQL约束电子邮件
我有一个数据库和一个名为User
的表。在用户名下有一列名为e-mail
的列。
该任务是为该表创建一个影响列电子邮件的新约束。
必须有一个唯一的 '@
' 和最小的一个 '.
'
不允许为任何特殊字符,如(!
,"
,#
,¤
,%
等)< - 这不包括'@'和'。'
我试过一些不同的东西,但似乎无法使它工作。另外它应该被注意到,我是一个初学者。
感谢您的帮助
或者你可以用约束创建表,这样,将检查是否所有给定的条件满足。 请您的
更改表中的数据。如果表不存在
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)
);
一些拒绝输入
[email protected]!%#¤com
一些@一些。!%#com
[email protected]%#com
一些@一些@ COM
!一些@一些@ 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 我必须将它添加到约束中,在那里我为表创建一个新的约束,而不是像查询中那样写下全部约束 –
我的意思是你可以创建你的表,它已经有一个电子邮件的约束它用这个方法 – 2017-10-20 06:45:37
请看最新的编辑 – 2017-10-20 06:50:51
至少*秀*您尝试。把作业问题倾倒在我们身上,期望我们做所有的工作对任何人都不是什么大事。在这些尝试不起作用的情况下也要描述 - 它们是否会产生错误?让你插入无效值?防止插入有效值?还有别的吗? –
向我们展示您当前的代码尝试。 – jarlh
我试过这个([电子邮件]像'%[email protected]__%.__%') 当我尝试输入电子邮件时,它说它不能使用,我不知道为什么。 –