Oracle ORA-00902:无效的数据类型-列名包含连字符
我们有一个结构如下的表格:Oracle ORA-00902:无效的数据类型-列名包含连字符,oracle,Oracle,我们有一个结构如下的表格: CREATE TABLE XREF_WORKER_EMPLOYME_2( Siebel-01 VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL, ); 表创建失败,出现以下错误: ORA-00902: invalid datatype 我们需要保留名为“Siebel-01”的列。 请建议如何使用此结构创建表,以及在插入数据或查询列名中带有“-”的表时会出现哪些进一步的问题。在NOT NULL关键字后有一个逗号
CREATE TABLE XREF_WORKER_EMPLOYME_2(
Siebel-01 VARCHAR2(2000),
ROW_ID VARCHAR2(48) NOT NULL,
);
表创建失败,出现以下错误:
ORA-00902: invalid datatype
我们需要保留名为“Siebel-01”的列。
请建议如何使用此结构创建表,以及在插入数据或查询列名中带有“-”的表时会出现哪些进一步的问题。在
NOT NULL
关键字后有一个逗号,其中一个列名中有一个连字符,需要处理,如果你想要连字符而不是取消字符
CREATE TABLE XREF_WORKER_EMPLOYME_2( Siebel-01 VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL, );
删除逗号,使DDL如下所示
CREATE TABLE XREF_WORKER_EMPLOYME_2( Siebel_01 VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL );
或
把名字用双引号引起来
CREATE TABLE XREF_WORKER_EMPLOYME_2( "Siebel-01" VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL );
但您也需要引用针对本专栏的大多数查询。仔细想想,如果你真的不能避免这一点:
此外,在需要删除的列定义末尾还有一个额外的逗号。您在Siebel-01中使用了连字符而不是下划线,并删除了末尾的逗号(,)
试试这个
CREATE TABLE XREF_WORKER_EMPLOYME_2(
Siebel_01 VARCHAR2(2000),
ROW_ID VARCHAR2(48) NOT NULL
);
您不能这样做,因为Oracle不允许在数据库名称中使用(-)连字符或减号
请点击这个链接。。
@downvorters:你应该等待至少5分钟的回答或问题。如果-1是因为缺少连字符,我已经编辑了我的答案。我在回答中强调的另一件事并没有错,尽管这只是“问题”的一部分
CREATE TABLE XREF_WORKER_EMPLOYME_2(
Siebel_01 VARCHAR2(2000),
ROW_ID VARCHAR2(48) NOT NULL
);