SQL - принимать только заглавные буквы по ограничению - PullRequest
0 голосов
/ 18 мая 2018
ALTER TABLE TblPersoon
    ADD Geslacht char(1) NULL
    CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'))

Когда я выполняю этот запрос, после этого все еще можно вставить «m» или «v» в столбец «Geslacht» в TblPersoon.Как я могу убедиться, что принимаются только заглавные буквы?

Я знаю, что смогу сделать это в SQL Server Management Studio, но где?

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вам нужен регистр с учетом регистра.Вы можете определить столбец таким образом, или сделать это в ограничении 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 это также, по-видимому, связано с набором символов («кодовые страницы»).Я делаю то, что для базовых вещей, таких как сравнение с учетом регистра и без учета регистра, не требовало их использования.Вы можете узнать больше об этом в документации .

0 голосов
/ 18 мая 2018

Вы можете определить явное сопоставление следующим образом:

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, вы можете изменить егосоответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...