2016-04-12 3 views
-1

Как бы вы обрабатывали импорт только данных для мужчин (m) или женщин (f) в поле gender, так что он не будет заполнен никакими потенциальными внешними исходными данными в SQL или SSIS?Импорт в поле полов в SQL/SSIS

+0

Я бы создал контрольное ограничение в поле. Это остановит таблицу, когда-либо содержащую данные этого типа. Если ваш SSIS или что-то попытается вставить что-то еще, он выкинет ошибку –

+0

Спасибо, Ник. – daniness

ответ

1

Вы можете создать столбец ограничение:

CREATE TABLE Persons 
(
Id int NOT NULL, 
LastName varchar(255), 
FirstName varchar(255), 
Gender varchar(1), 
CONSTRAINT chk_Gender CHECK (Gender ='m' or Gender='f') 
) 

Insert into Persons values(1,'smith', 'jane', 'f'); 
insert into Persons values(2,'smith', 'john', SUBSTRING('male', 1, 1)); 
/* this will fail 
INSERT INTO Persons values (3,'foo', 'bar', 'u'); 
*/ 
select * FROM Persons; 

Working Fiddle

+0

Спасибо, scottJustin5000. – daniness

1

Это тривиальный добавить проверочное ограничение, что-то вроде:

CREATE TABLE #Test (
    GENDER CHAR(1) CONSTRAINT Constraint_Gender CHECK (GENDER IN ('A','B','C')) 
) 
INSERT INTO #Test VALUES ('A') 
INSERT INTO #Test VALUES ('D') 

(1 row(s) affected) 
Msg 547, Level 16, State 0, Line 9 
The INSERT statement conflicted with the CHECK constraint "Constraint_Gender". 

Тем не менее, вы действительно должны обслужить не- двоичные полы аналогичным образом для facebook и т. д. https://www.facebook.com/facebookdiversity/posts/774221582674346 (следовательно, A, B, C в моем примере выше)

+0

Спасибо, Les H. – daniness

Смежные вопросы