2009-02-18 9 views

Respuesta

78

Poner comillas dobles alrededor de un identificador en causas de Oracle Oracle trata el identificador como sensible a mayúsculas y minúsculas en lugar de utilizar el valor predeterminado de insensibilidad a mayúsculas y minúsculas. Si crea una tabla (o una columna) con comillas dobles alrededor del nombre, siempre debe referirse al identificador con comillas dobles y especificando correctamente el caso (con la excepción de todos los identificadores en mayúscula, donde las comillas dobles no tienen sentido)

Debajo de las cubiertas, Oracle siempre está haciendo coincidir identificador de mayúsculas y minúsculas. Pero siempre arroja identificadores que no están doblemente citados a mayúsculas antes de hacer la coincidencia. Si coloca comillas dobles alrededor de un identificador, Oracle se salta la conversión a mayúsculas.

Así que si haces algo como

CREATE TABLE my_table( 
    col1 number, 
    col2 number 
) 

puede

SELECT * FROM my_table 
SELECT * FROM MY_TABLE 
SELECT * FROM My_Table 
SELECT * FROM "MY_TABLE" 

sino algo así como

SELECT * FROM "my_table" 

se producirá un error.

Por otro lado, si haces algo como

CREATE TABLE "my_other_table"( 
    col1 number, 
    col2 number 
) 

no se puede hacer

SELECT * FROM my_other_table 
SELECT * FROM MY_OTHER_TABLE 
SELECT * FROM My_Other_Table 
SELECT * FROM "MY_OTHER_TABLE" 

pero esto

SELECT * FROM "my_other_table" 

trabajará

+1

Esta respuesta deja fuera el hecho de que también permite que los identificadores contengan caracteres que de otro modo serían ilegales, como un carácter de espacio. Probablemente también sea una buena práctica usar solo letras mayúsculas, dígitos y guiones bajos. Hacerlo hará que la vida de todos sea más fácil. – jpmc26

9

Debe añadirse que identificadores entre comillas pueden contener caracteres especiales, p. "a-b c.d" es un identificador válido.

Cuestiones relacionadas