Название столбца начинается с цифры? - PullRequest
6 голосов
/ 24 мая 2011

У меня есть имя столбца в одной из моих таблиц: 3RD_DIAG_CODE - VARCHAR2 (10 Byte)

Когда я пытаюсь выполнить запрос, появляется следующая ошибка: 3RD_DIAG_CODE.

ORA-00923: ключевое слово FROM не найдено там, где ожидается.

Как я могу ввести это поле, чтобы оно не выдавало ошибку каждый раз, когда я вношу это поле?

Ответы [ 3 ]

15 голосов
/ 24 мая 2011

Если вы используете имена столбцов, начинающиеся с цифры, то вам нужно использовать двойные кавычки.Например:

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 голос
/ 24 мая 2011

Возможно, у вас есть два столбца без запятой между ними.

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 голос
/ 24 мая 2011

Проверьте свою спецификацию, но в SQL Server мы должны заключить имя этого столбца в квадратные скобки: [3RD_DIAG_CODE]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...