simples - consulta sql comilla simple
¿Qué exactamente hacen las comillas alrededor del nombre de la tabla? (2)
Pensé que la comilla (") era simplemente un tipo de marcador de agrupación, pero estoy depurando algún código de NHibernate y noto que, aunque
SELECT * FROM site WHERE site_id = 3;
Funciona bien
SELECT * FROM "site" WHERE site_id = 3;
falla con una tabla o vista no existe error.
¿Lo que da?
Al poner comillas dobles alrededor de un identificador en 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 coberturas, Oracle siempre está haciendo una coincidencia de identificador sensible a 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.
Entonces, si haces algo como
CREATE TABLE my_table(
col1 number,
col2 number
)
usted puede
SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"
pero algo así como
SELECT * FROM "my_table"
fallará.
Por otro lado, si haces algo como
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
tú no puedes 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á
Se debe agregar que los identificadores entre comillas pueden contener caracteres especiales, por ejemplo, "ab cd" es un identificador válido.