这是我在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
的第二行抛出“缺少右括号”错误。我在其他地方读过,这是语法上的一般错误,但是对我来说,即使我将源材料中的代码复制并粘贴到SQL工作表中或现在重新键入它大约20次,我仍然会收到错误。
我还尝试将字符强制转换为char,因为regno是一个数字。
Alter table student add constraint b2 check (length(to_char(regno)<=4));
但是我遇到同样的错误。
比较运算符(<=
)应该在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)
干杯!