ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'))
当我执行这个查询之后,仍然可以在TblPersoon表的“Geslacht”列中插入“m”或“v”。如何确保只接受大写字母?
我知道我应该能够在SQL Server Management Studio中实现这一点,但在哪里?
collation:
ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht collate SQL_Latin1_General_CP1_CS_AS in ('M', 'V'))
然而,我使用了默认的排序规则区分大小写类型SQL_Latin1_General_CP1_CS_AS
,您可以根据需要进行更改。
您需要一个区分大小写的排序规则。您可以在该列上定义,或在check
约束中实现:
ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht collate Latin1_General_CS_AS in ('M', 'V'));
或者:
ALTER TABLE TblPersoon
ADD Geslacht char(1) collate Latin1_General_CS_AS
CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'));
总的来说,排序规则是一个有点棘手的主题。它涉及不同字符之间的关系。在SQL Server中,它似乎也与字符集(“代码页”)混淆在一起。我希望基本的事情,如区分大小写和不区分大小写的比较,不需要使用它们。您可以在文档中了解更多信息。