oracle sql проверка ограничения для числа to_char - PullRequest
0 голосов
/ 23 января 2020

Это проблема с домашней работой, которую я ввожу на oracle live sql веб-сайте:

Create table student (regno number (6), mark number (3) constraint b check (mark >=0 and
mark <=100));
Alter table student add constraint b2 check (length(regno<=4));

Он продолжает выдавать ошибку «отсутствует правильная скобка» во второй строке Alter , Я читал в другом месте, что это общая ошибка c для синтаксиса, но на всю жизнь, даже если я копирую и вставляю код из исходного материала в лист SQL или перепечатываю его примерно 20 раз, я продолжаю получать ошибка.

Я также пробовал приводить к типу char, поскольку regno - это число.

Alter table student add constraint b2 check (length(to_char(regno)<=4));

Но я получаю ту же ошибку.

1 Ответ

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

Оператор сравнения (<=) должен находиться за пределами функции length:

SQL> CREATE TABLE STUDENT (
  2      REGNO   NUMBER(6),
  3      MARK    NUMBER(3)
  4          CONSTRAINT B CHECK ( MARK >= 0
  5                               AND MARK <= 100 )
  6  );

Table created.

SQL> -- Solution of the question
SQL> ALTER TABLE STUDENT
  2      ADD CONSTRAINT B2 CHECK ( LENGTH(REGNO) <= 4 );

Table altered.

SQL>

Одно предложение. Если вы хотите ограничить REGNO только 4 цифрами, то преобразуйте тип данных REGNO как NUMBER(4)

Приветствия !!

...