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"
check(UserTypeID like 'U'+'T'+'[0-9][0-9]') 这种写法你从哪里看来的?这个约束删除掉了就正常了,你可以试下别的写法。楼上说的SQL SERVER是另外一种数据库,跟ORACLE没关系。帮你换了一个,但是不知道你的需求,你看着改。check(regexp_like(UserTypeID ,'^([UT]+[0-9][0-9])$'))
你的应该不是SQL server ,SQL语句如果放在SQL server 中需要改动一下 varchar2(4) 变为 varchar(4)number(1) 变为 bit然后一切正常。 追问 SQL server是指什么,是在选择sid和server时的server吗??一般是用varchar2比较兼容的呀??sql developer里有bit这种数据类型吗??