导入SQL/SSIS中的性别字段

导入SQL/SSIS中的性别字段,sql,ssis,Sql,Ssis,如何处理仅将男性(m)或女性(f)数据导入性别字段,以便在SQL或SSIS中不会填充任何潜在的无关源数据?您可以创建列约束: 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 va

如何处理仅将男性(m)或女性(f)数据导入性别字段,以便在SQL或SSIS中不会填充任何潜在的无关源数据?

您可以创建列约束:

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;

添加检查约束非常繁琐,例如:

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等的方式来满足非二元性别的需求(因此在我上面的示例中是a、B、C)

我会在字段上创建一个检查约束。这将停止包含该类型数据的表。如果您的SSI或任何东西试图插入其他内容,它将抛出一个错误谢谢,Scott5000。