Как проверить длину номера в SQL оракула? - PullRequest
0 голосов
/ 22 февраля 2019

Я начинающий на Sql.

Я создал таблицу с полем телефона:

CREATE TABLE contact (

phone NUMBER(9),

)

Теперь мне нужно установить CHECK, чтобы ограничить длину цифр дочисло var, чтобы позволить вам ввести только 9-значное число и не более или менее.

Я пытаюсь:

ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)

Но это не работает, потому что он преобразует числовой форматв строку.

Как это сделать, чтобы сохранить тип номера и проверить его до 9 цифр?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете указать номер телефона как varchar2 или тип символа и проверить номер телефона с помощью регулярного выражения:

CREATE TABLE contact (
   phone CHAR(9),
   constraint valid_phone_number 
   CHECK (REGEXP_LIKE(phone, 'd{9}$'))
);
0 голосов
/ 22 февраля 2019

Не храните телефон как номер.Вместо этого используйте строку.Если оно должно быть ровно 9 цифрами, то:

CREATE TABLE contact (
    phone CHAR(9),
    constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') )
)

Номер телефона на самом деле не является номером.Число это то, что вы можете сделать арифметику.Кроме того, телефонный номер может начинаться с 0.

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