insert插入数据时 SQL 错误: ORA-01722: 无效数字

CREATE TABLE DTUserType(
UserTypeID varchar2(4) not null /*类型编号*/
check(UserTypeID like 'U'+'T'+'[0-9][0-9]'),
UserType varchar2(10) not null /*用户类型*/
check(UserType in ('管理员','送菜服务员','结账服务员','会员顾客','普通顾客')),
Invalid number(1) default 0 /*是否作废*/
check(Invalid between 0 and 1) not null,
constraint DTUserTypePK primary key(UserTypeID)
);
建表没有错误
为什么插入数据时报错:insert into DTUserType values('UT01','管理员',0);错误报告:
SQL 错误: ORA-01722: 无效数字
01722. 00000 - "invalid number"
最新回答
酒色清浅

2025-03-29 14:16:57

check(UserTypeID like 'U'+'T'+'[0-9][0-9]') 这种写法你从哪里看来的?

这个约束删除掉了就正常了,你可以试下别的写法。
楼上说的SQL SERVER是另外一种数据库,跟ORACLE没关系。

帮你换了一个,但是不知道你的需求,你看着改。
check(regexp_like(UserTypeID ,'^([UT]+[0-9][0-9])$'))
试卷看似简单但心机太重

2025-03-29 01:57:45

你的应该不是SQL server ,SQL语句如果放在SQL server 中
需要改动一下
varchar2(4) 变为 varchar(4)
number(1) 变为 bit

然后一切正常。
追问
  1. SQL server是指什么,是在选择sid和server时的server吗??

  2. 一般是用varchar2比较兼容的呀??

  3. sql developer里有bit这种数据类型吗??