2009-07-22 9 views
98

Dans TSQL, je pourrais utiliser quelque chose comme Select [table] from tablename pour sélectionner une colonne nommée "table".Comment échapper un mot réservé dans Oracle?

Comment faire cela pour les mots réservés dans Oracle?

Edit: J'ai essayé des crochets, guillemets doubles guillemets simples et backquotes, ils ne travaillent pas ...

En plus de précisions, j'ai une colonne personne nommée commentaire. Comme il s'agit d'un mot réservé, l'oracle est en train de fléchir en essayant de sélectionner avec lui, son échec lors de l'analyse de la requête. J'ai essayé de sélectionner "commentaire" du nom de table, mais cela n'a pas fonctionné. Je vais vérifier l'affaire et revenir.

+0

double possible de [Oracle: Que faire exactement entre guillemets faire le nom de la table] (http://stackoverflow.com/questions/563090/oracle-what-exactly-do -quotation-marks-around-the-table-name-do) – user123444555621

Répondre

151

A partir d'une recherche rapide, Oracle semble utiliser des guillemets doubles (", par exemple "table") et exige apparemment le cas correct -Considérant, pour toute personne intéressée par défaut, MySQL à l'aide de (`guillemets obliques), sauf lorsqu'il est réglé à utiliser le double citations pour la compatibilité.

+0

Hey, je peux me tromper, mais est-ce que la personne qui savait que je me trompais peut poster la bonne réponse? – eyelidlessness

+1

Je vous ai marqué parce que j'ai essayé d'échapper le mot en utilisant des guillemets doubles et cela n'a pas fonctionné. – Spence

+0

Je vais tout vérifier et revenir et vous marquer correctement si je l'obtiens à travailler avec des guillemets doubles. – Spence

3

Oracle utilise des guillemets, mais vous devez placer le nom de l'objet en majuscule, par exemple. "TABLE". Par défaut, si vous créez un objet sans guillemets, par ex.

CREATE TABLE table AS ... 

Oracle créerait l'objet comme majuscules. Cependant, le référencement n'est pas sensible à la casse sauf si vous utilisez des guillemets doubles!

29

Oracle requiert normalement des guillemets doubles pour délimiter le nom des identificateurs dans les instructions SQL, par ex.

SELECT "MyColumn" AS "MyColAlias" 
FROM "MyTable" "Alias" 
WHERE "ThisCol" = 'That Value'; 

Cependant, il permet gracieusement omettre les guillemets doubles, auquel cas il convertit tranquillement l'identifiant en majuscules:

SELECT MyColumn AS MyColAlias 
FROM MyTable Alias 
WHERE ThisCol = 'That Value'; 

obtient interne converti en quelque chose comme:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS" 
FROM "THEUSER" . "MYTABLE" "ALIAS" 
WHERE "ALIAS" . "THISCOL" = 'That Value'; 
-7

vous devez renommer la colonne en un autre nom car TABLE est réservé par Oracle.

Vous pouvez voir tous les mots réservés d'Oracle dans la vue Oracle V$RESERVED_WORDS.

+0

Je reçois 'ORA-00942' quand j'essaie un' select * from V $ RESERVED_WORDS'. – ceving

3

Les guillemets doubles travaillaient dans Oracle lorsque j'avais le mot-clé comme nom de colonne.

par exemple:

Questions connexes