2010-01-02 27 views

Respuesta

107

Las comillas simples se utilizan para indicar el comienzo y el final de una cadena en SQL. Generalmente, las comillas dobles no se usan en SQL, pero pueden variar de una base de datos a otra.

Se adhieren al uso de comillas simples.

Ese es el uso principal de todos modos. Puede usar comillas simples para un alias de columna, donde desea que el nombre de la columna que hace referencia en el código de la aplicación sea diferente de lo que realmente se llama en la base de datos. Por ejemplo: PRODUCT.id sería más fácil de leer como product_id, por lo que utilizar cualquiera de los siguientes:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

O funciona en Oracle, SQL Server, MySQL ... pero sé que algunos Han dicho que el IDE de TOAD parece dar algo de pena cuando se usa el enfoque de comillas simples.

Tiene que utilizar comillas simples cuando el alias de columna incluye un carácter de espacio, por ejemplo, product id, pero no es recomendable practicar para un alias de columna para que sea más de una palabra.

+22

Las comillas dobles se utilizan generalmente para los nombres de objeto (por ejemplo, nombre de la columna "Nombre"). Eso es parte del estándar SQL-92. – LukLed

+0

@LukLed: ¿Quiere decir un alias de columna * *? Si usted lo dice - Sólo he visto nunca y/o usado la notación 'AS column_name', o cuando usted indica el alias entre comillas simples ** ** después de la referencia de columna. Tengo que adjuntar el alias entre comillas simples si hay un carácter de espacio (que no recomiendo) en el alias de la columna. –

+17

No. Quise decir los nombres de las columnas, pero también se refiere a los alias. Aconsejo usar comillas dobles para alias y nombres con caracteres inusuales, debido al estándar SQL-92. 'SELECT * FROM USERS 'Users'' no funciona en SQL Server, pero' SELECT * FROM USERS "Users" 'hace. – LukLed

31

En ANSI SQL, comillas dobles citan los nombres de objetos (por ejemplo, tablas) que les permite contienen caracteres no permitidos de otro modo, o ser el mismo que las palabras reservadas (evitar esto, en realidad).

Las comillas simples son para cadenas.

Sin embargo, MySQL es ajeno a la norma (a menos que cambie su sql_mode) y les permite ser utilizados indistintamente para las cadenas.

Además, Sybase y Microsoft también usan corchetes para las citas de los identificadores.

Por lo tanto, es un poco específico del vendedor.

Otras bases de datos como PostgreSQL e IBM en realidad se adhieren a la norma ANSI :)

+4

MySql utiliza backtick 'para las citas de identificador. (solo para completarlo) – dar7yl

+0

Ejemplo: Si desea nombrar una "fecha" de la columna de Postgres (que está reservada), deberá duplicarla. – fny

55

Las comillas simples delimitan constante o una constante de fecha/hora en una cadena.

Las comillas dobles delimitan los identificadores para, p. Ej. nombres de tablas o columnas Esto generalmente solo es necesario cuando su identificador no se ajusta a las reglas de los identificadores simples.

Consulte también:

Usted puede hacer que MySQL utiliza comillas dobles por el estándar ANSI:

SET GLOBAL SQL_MODE=ANSI_QUOTES 

Usted puede hacer Microsoft SQL Server utilizan comillas dobles según el estándar ANSI:

SET QUOTED_IDENTIFIER ON 
35
  • [S] cotizaciones Ingle son para [S] Trings; [D] las comillas ouble son para [D] identificadores de atabase;
  • El símbolo ` es el mismo que el " símbolo. Se puede utilizar " con ANSI_QUOTES habilitado.
+4

Para aclarar, backtick (') se puede usar para delimitar identificadores si ANSI_QUOTES está habilitado, pero si ANSI_QUOTES está habilitado, entonces" no se pueden usar comillas dobles para citar cadenas literales, porque se interpreta como un identificador ". ([fuente] (https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes)). (Todo esto supone que estás hablando de MySQL, atención). – Sam

+0

¡Buen comentario, gracias! –

1

Yo uso esta regla mnemotécnica:

  • Las comillas simples son para cuerdas (una cosa)
  • Las comillas son los nombres de las tablas y nombres de columna (dos cosas)

esto es no es 100% correcto según las especificaciones, pero este mnemónico me ayuda (ser humano).

Cuestiones relacionadas