Как добавить проверку для проверки длины целочисленного ввода? - PullRequest
0 голосов
/ 23 февраля 2010

... для строк это просто ... ДЛИНА ( атрибут ), но для целых, ДЛИНА всегда возвращает "4" для целых, "8" для больших и т. Д.

Итак, с учетом такого утверждения:

create table EMPLOYEE (employeeno bigint NOT NULL PRIMARY KEY);

Как я могу добавить предложение CHECK, которое будет проверять, точно ли вставленное имя сотрудника состоит из 6 цифр?

Ответы [ 3 ]

1 голос
/ 23 февраля 2010

Используйте проверочное ограничение для проверки val >= 100000 и val <= 999999.

Если вам нужно, вы можете изменить это на val >= 0 и val <= 999999. Обратите внимание, что типы int не содержат никакой информации о ведущих нулях, поэтому информация уже теряется к моменту попадания в базу данных.

1 голос
/ 23 февраля 2010

Лично я бы предпочел проверять целые числа, используя числовые ограничения. Так что возникает вопрос: вы действительно хотите посмотреть на длину символа строкового представления целого числа? Например, -100000 должно быть разрешено? Я предполагаю, что это не так, и предлагаю что-то вроде:

create table EMPLOYEE (
    employeeno integer
        CHECK (employeeno BETWEEN 1000000 AND 999999)
        NOT NULL PRIMARY KEY
);

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

1 голос
/ 23 февраля 2010

Конвертируйте его или сначала приведите как varchar, а затем используйте длину.

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