SQL ограничение E-Mail
У меня есть назначение, которое я должен сделать в диспетчере SQL Server.
У меня есть база данных и таблица с именем User
, Под пользователем есть столбец с именем e-mail
,
Назначение заключается в создании нового ограничения для этой таблицы, которое влияет на столбец электронной почты.
Должен быть только один@
и минимум один.
'
Не допускается использование каких-либо специальных символов, таких как (!
, "
, #
, ¤
, %
и т. д.) <- это не включает '@' и '.'
Я пробовал разные вещи, но не могу заставить его работать. Также следует заметить, что я новичок.
Спасибо за вашу помощь
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
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