¿Cómo puedo escapar de una palabra reservada en Oracle?

Resuelto Spence asked hace 15 años • 5 respuestas

En TSQL podría usar algo como Select [table] from tablenameseleccionar una columna llamada "tabla".

¿Cómo hago esto para palabras reservadas en Oracle?

Editar: Probé con llaves cuadradas, comillas dobles, comillas simples y comillas invertidas, pero no funcionan...

Como aclaración adicional, tengo una columna que alguien nombró comentario. Como se trata de una palabra reservada, Oracle está lanzando un tambaleo al intentar seleccionarla, falla al analizar la consulta. Intenté seleccionar "comentario" del nombre de la tabla pero no funcionó. Revisaré el caso y volveré.

Spence avatar Jul 22 '09 07:07 Spence
Aceptado

De una búsqueda rápida, Oracle parece usar comillas dobles ( ", por ejemplo "table") y aparentemente requiere el uso de mayúsculas y minúsculas correctas , mientras que, para cualquiera interesado, MySQL utiliza por defecto comillas invertidas (`) excepto cuando está configurado para usar comillas dobles por compatibilidad.

eyelidlessness avatar Jul 22 '2009 00:07 eyelidlessness

Oracle normalmente requiere comillas dobles para delimitar el nombre de los identificadores en declaraciones SQL, por ejemplo

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

Sin embargo, permite omitir las comillas dobles, en cuyo caso convierte silenciosamente el identificador a mayúsculas:

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

se convierte internamente a algo como:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';
Jeffrey Kemp avatar Jul 22 '2009 02:07 Jeffrey Kemp

Las comillas dobles funcionaron en Oracle cuando tenía la palabra clave como uno de los nombres de la columna.

p.ej:

select t."size" from table t 
Suresh G avatar Mar 30 '2017 14:03 Suresh G

Oracle utiliza comillas dobles, pero lo más probable es que necesite colocar el nombre del objeto en mayúsculas, por ejemplo, "TABLA". De forma predeterminada, si crea un objeto sin comillas dobles, por ejemplo

CREATE TABLE table AS ...

Oracle crearía el objeto en mayúsculas . Sin embargo, la referencia no distingue entre mayúsculas y minúsculas a menos que utilice comillas dobles.

Andrew G avatar Jul 22 '2009 00:07 Andrew G