2011-05-24 87 views
4

我打电话给我的一个表有一个列名:3RD_DIAG_CODE - VARCHAR2 (10 Byte)列名以数字开头?

当我尝试运行一个查询,它给了我下面的错误突出3RD_DIAG_CODE

ORA-00923:FROM keyword not found where expected。

如何在每次将此字段放入时不会引发错误而不发生错误?

+0

没有足够的信息,发布您的整个查询。 – JonH 2011-05-24 17:13:27

+0

https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF51129 – 2016-12-30 11:32:37

回答

10

如果您使用的列名以数字开头,那么您需要使用双引号。例如:

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子句一个逗号。

1

检查规范,但在SQL Server中,我们将不得不在方括号括该列名:[3RD_DIAG_CODE]

+0

通过在我的字段名称周围添加双引号,我能够运行查询并为我提供所需的结果。 例: SELECT FIELDNAMES, “3RD_DIAG_CODE” 为DiagCd3 从MyTable的; – JK0124 2011-05-24 17:23:35

1

你可能有他们之间没有逗号上市两列。

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: 
+1

尝试向表中添加一行或两行数据并重新运行您的选择 - 选择3d与“3d”的行为有所不同。 – gsiems 2011-05-24 17:31:41

+0

@gsiems,有趣。根本没有期望那种行为。 >从双重选择3dxasdfasdf,4adffafafdasdf XASDFASDF ADFFAFAFDASDF --------- ------------- 3.0 4 – 2011-05-24 18:06:55

相关问题