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
);