【发布时间】:2011-05-24 17:10:36
【问题描述】:
我的一个表中有一个列名:3RD_DIAG_CODE - VARCHAR2 (10 Byte)
当我尝试运行查询时,它给了我以下突出显示 3RD_DIAG_CODE 的错误。
ORA-00923:在预期的地方找不到 FROM 关键字。
我怎样才能在每次带入此字段时不引发错误的情况下引入此字段?
【问题讨论】:
-
没有足够的信息,发布您的整个查询。
我的一个表中有一个列名:3RD_DIAG_CODE - VARCHAR2 (10 Byte)
当我尝试运行查询时,它给了我以下突出显示 3RD_DIAG_CODE 的错误。
ORA-00923:在预期的地方找不到 FROM 关键字。
我怎样才能在每次带入此字段时不引发错误的情况下引入此字段?
【问题讨论】:
如果您使用以数字开头的列名,则需要使用双引号。例如:
create table foo (
"3RD_DIAG_CODE" varchar2(10 byte) --make sure you use uppercase for variable name
);
insert into foo values ('abc');
insert into foo values ('def');
insert into foo values ('ghi');
insert into foo values ('jkl');
insert into foo values ('mno');
commit;
select * from foo;
3RD_DIAG_C
----------
abc
def
ghi
jkl
mno
select 3RD_DIAG_CODE from foo;
RD_DIAG_CODE
------------
3
3
3
3
3
select "3RD_DIAG_CODE" from foo;
3RD_DIAG_C
----------
abc
def
ghi
jkl
mno
编辑:至于错误消息本身,您可能(如 BQ 所写)在 select 子句中缺少逗号。
【讨论】:
检查您的规范,但在 SQL Server 中,我们必须将该列名括在方括号中:[3RD_DIAG_CODE]
【讨论】:
[sql] 标签仅表示查询语言,而不是 MS SQL Server。
您可能列出了两列,它们之间没有逗号。
create table t (id number primary key, 3d varchar2(30))
Error at Command Line:1 Column:39
Error report:
SQL Error: ORA-00904: : invalid identifier
00904. 00000 - "%s: invalid identifier"
create table t (id number primary key, "3d" varchar2(30));
table T created.
desc t
Name Null Type
---- -------- ------------
ID NOT NULL NUMBER
3d VARCHAR2(30)
> select id, 3d from t --[as @gsiem mentions: THIS IS BAD]
ID 3D
---------------------- --------
> select id, "3d" from t
ID 3d
---------------------- ------------------------------
> select id, [3d] from t
Error starting at line 7 in command:
select id, [3d] from t
Error at Command Line:7 Column:11
Error report:
SQL Error: ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action:
> select id 3d from t
Error starting at line 8 in command:
select id 3d from t
Error at Command Line:8 Column:10
Error report:
SQL Error: ORA-00923: FROM keyword not found where expected
00923. 00000 - "FROM keyword not found where expected"
*Cause:
*Action:
【讨论】: