9
votes

Nom de la colonne commençant par un numéro?

J'ai un nom de colonne dans l'une de mes tables appelées: 3rd_diag_code - varchar2 (10 octets)

Quand j'essaie d'exécuter une requête, cela me donne l'erreur suivante sur la surbrillance de la surbrillance 3RD_DIAG_CODE .

ora-00923: à partir du mot clé introuvable si attendu.

Comment puis-je apporter ce champ sans qu'elle jetant une erreur à chaque fois que j'apporte ce champ?


2 commentaires

Pas assez d'informations, publiez toute votre requête.


docs.oracle.com/database/121/sqlrf/...


3 Réponses :


2
votes

Vérifiez votre spécification, mais dans SQL Server, nous devrons joindre le nom de la colonne dans les crochets: [3rd_diag_code]


2 commentaires

En mettant des citations doubles autour de mon nom de champ, j'ai pu avoir la course à la requête et me donner les résultats dont j'avais besoin. Ex: Sélectionnez Noms de champ, "3rd_diag_code" comme DiagCD3 de MyTable;


L'OP a indiqué qu'ils utilisent Oracle, des solutions fournissant SQL Server Syntax ne sont pas utiles. Sur Stackoverflow, la balise [sql] signifie simplement la langue de requête et non MS SQL Server.



1
votes

Vous avez probablement deux colonnes répertoriées sans une virgule entre eux.

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:


2 commentaires

Essayez d'ajouter une ligne ou deux de données à la table et réexécutez votre sélection-- Sélectionnez 3D contre "3D" se comporter différemment.


@gsiems, intéressant. Ne s'attendait pas à ce comportement. > Sélectionnez 3DXASDFASDF, 4adffaFAFDASDF à partir de Dual XASDFASDF AdFFAFAFDASDF --------- ------------ 3.0 4



24
votes

Si vous utilisez des noms de colonne commençant par un numéro, vous devez utiliser des guillemets doubles. Par exemple: xxx

EDIT: Comme pour le message d'erreur lui-même, vous êtes probablement (comme BQ a écrit) manquer une virgule à partir de la clause SELECT.


0 commentaires