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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"

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

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

帮你换了一个,但是不知道你的需求,你看着改。
check(regexp_like(UserTypeID ,'^([UT]+[0-9][0-9])$'))
参考技术A 你的应该不是SQL server ,SQL语句如果放在SQL server 中
需要改动一下
varchar2(4) 变为 varchar(4)
number(1) 变为 bit

然后一切正常。追问

    SQL server是指什么,是在选择sid和server时的server吗??

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

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

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

参考技术A 你的表triggerzkl
中不止四列,但你的insert语句中,仅有四列。
1.
将insert后面的值补齐

2.
写成insert triggerzkl(....)values(...)的形式
2选1

以上是关于insert插入数据时 SQL 错误: ORA-01722: 无效数字的主要内容,如果未能解决你的问题,请参考以下文章

C# 向Access数据库插入数据时提示INSERT INTO语法错误

访问不允许SQL-Server列中的空值的INSERT或UPDATE(访问运行时错误3162)

执行 INSERT 时出现 SQL 错误:“s”附近的语法不正确 [重复]

IDENTITY INSERT 和 LINQ to SQL

关于数据库的insert插入语句

语法错误:来自 Python + Scrapy 的 SQL INSERT?