Ограничение точного количества чисел, вводимых в поле Oracle SQL Разработчик - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь создать поле для телефонных номеров, которое требует не более, не менее 10 номеров. Я пробовал номер телефона (10) CHECK (Телефон = 10), но он не работает, и не добавляет его в качестве ограничения после атрибутов.

Ответы [ 2 ]

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

Номера телефонов обычно хранятся в виде строк, а не чисел. Во-первых, число на самом деле не число. Например, не имеет смысла добавлять два из них вместе. Во-вторых, начальные нули могут иметь значение.

Итак, я бы порекомендовал:

telephone varchar2(10) check (length(telephone) = 10)

Если вы хотите сохранить его как число, вы можете использовать диапазон:

telephone number(10, 0) check (telephone >= 1000000000 and
                               telephone < 10000000000
                              )

Это явно, что нет десятичных разрядов.

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

Вы можете использовать проверочное ограничение, например:

create table t (id int primary key, telephone varchar2(10), check(length(telephone) = 10))

Или, если телефонный номер является целым числом:

create table t (
    id int primary key, 
    telephone int, 
    check(telephone>= 1000000000 and telephone < 10000000000)
);
...