Как добавить проверочное ограничение, разрешающее только AZ для последнего символа - PullRequest
1 голос
/ 07 января 2020

Привет, у меня есть столбец varchar, который я хочу разрешить только символам AZ на последнем символе. Я пробовал несколько решений, но это не сработало. Последнее, что я попробовал, было

ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (roomNo NOT LIKE '%[^A-Z]');

Но я все еще могу добавить в него такие значения, как asdd1. Есть ли способ обойти это? Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Вы можете использовать функцию ASCII() вместе с SUBSTR():

ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (ASCII(SUBSTR(roomNo,-1)) BETWEEN 65 AND 90);

Демо

, где значение ASCII для A равно 65, для Z это 90, и все другие столицы остаются в этом диапазоне.

1 голос
/ 07 января 2020

regexp_like() - это простое решение:

ALTER TABLE timetableslot ADD CONSTRAINT
    CHK_RoomNo CHECK (REGEXP_LIKE(roomNo, '[A-Z]$') );
...