ALTER TABLE TblPersoon
    ADD Geslacht char(1) NULL
    CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'))


当我执行此查询时,之后仍然可以在TblPersoon的“ Geslacht”列中插入“ m”或“ v”。
如何确定只接受大写字母?

我知道我应该能够在SQL Server Management Studio中执行此操作,但是在哪里?

sql - SQL-仅通过约束接受大写字母-LMLPHP

最佳答案

您需要区分大小写的排序规则。您可以以这种方式定义列,也可以在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中,它似乎也与字符集(“代码页”)混合在一起。我做到了区分大小写和不区分大小写的比较之类的基本操作不需要使用它们。您可以在documentation中了解更多信息。

10-05 19:44