¿Cuál es la diferencia entre comillas simples y dobles en SQL?

Respuestas:

154

Las comillas simples se usan para indicar el comienzo y el final de una cadena en SQL. Las comillas dobles generalmente no se usan en SQL, pero eso puede 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 a la que hace referencia en el código de su aplicación sea diferente de lo que realmente se llama la columna en la base de datos. Por ejemplo: PRODUCT.idsería más legible como product_id, por lo que utiliza cualquiera de los siguientes:

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

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

Debe usar comillas simples cuando el alias de columna incluye un carácter de espacio, por ejemplo product id, pero no es una práctica recomendada que un alias de columna sea más de una palabra.

Ponis OMG
fuente
31
Las comillas dobles generalmente se utilizan para objetar nombres (por ejemplo, nombre de columna "Nombre"). Eso es parte del estándar SQL-92.
LukLed
19
No. Me refería a los nombres de columna, pero también se refiere a los alias. Aconsejaría utilizar 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 lo SELECT * FROM USERS "Users"hace.
LukLed
122
Siempre me equivoco hasta que me doy cuenta de una regla simple: [S] cita simple para [S] trings, [D] doble cita para cosas en la [D] atabase
Spacedman
44
Debe usar comillas dobles para los identificadores. Las comillas simples van en contra del estándar.
Erwin Brandstetter
66
SELECT PRODUCT.id 'product_id'será no trabajar en Oracle. Las comillas simples son solo para literales de caracteres. No se pueden usar para identificadores en SQL (estándar) (aunque algunos DBMS simplemente ignoran el estándar SQL cuando se trata de identificadores citados)
a_horse_with_no_name
80

Una regla simple para que recordemos qué usar, en cuyo caso:

  • Las comillas [ S ] ingle son para trings [ S ]; [ D ] las comillas dobles son para identificadores de [ D ] atabase;

En MySQL y MariaDB, el símbolo ` (retroceso) es el mismo que el " símbolo. Puede usarlo " cuando su función SQL_MODEestá ANSI_QUOTEShabilitada.

Please_Dont_Bully_Me_SO_Lords
fuente
44
Para aclarar, la tecla de retroceso (`) se puede usar para delimitar identificadores si ANSI_QUOTES está habilitado o no, pero si ANSI_QUOTES está habilitado, entonces" no puede usar comillas dobles para citar cadenas literales, porque se interpreta como un identificador ". ( fuente ) (Todo esto supone que estás hablando de MySQL, cuenta.)
Sam
¡Guauu! Excelente memo!
Alex Yu
Pero las citas de [ S ] ingle también son para [ D ] ate literales. : - /
Bill Karwin
Los literales de fecha cuentan como cadenas en la mayoría de los DBMS
Please_Dont_Bully_Me_SO_Lords
64

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

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

Ver también:

Puede hacer que MySQL use comillas dobles según el estándar ANSI:

SET GLOBAL SQL_MODE=ANSI_QUOTES

Puede hacer que Microsoft SQL Server use comillas dobles según el estándar ANSI:

SET QUOTED_IDENTIFIER ON
Bill Karwin
fuente
36

En ANSI SQL, las comillas dobles citan nombres de objetos (por ejemplo, tablas) que les permite contener caracteres no permitidos de otra manera, o ser lo mismo que palabras reservadas (evítelo, en realidad).

Las comillas simples son para cadenas.

Sin embargo, MySQL es ajeno al estándar (a menos que se cambie su SQL_MODE) y permite que se usen de manera intercambiable para cadenas.

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

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

Otras bases de datos como Postgres e IBM se adhieren al estándar ansi :)

MarkR
fuente
44
MySql usa la tecla de retroceso `para las citas del identificador. (solo para completar)
dar7yl
1
Ejemplo: si desea nombrar una "fecha" de columna de Postgres (que está reservada), deberá citarla dos veces.
fny
9

Yo uso esta mnemónica:

  • Las comillas simples son para cadenas (una cosa)
  • Las comillas dobles son para nombres de tablas y columnas (dos cosas)

Esto no es 100% correcto según las especificaciones, pero esta mnemónica me ayuda (ser humano).

guettli
fuente
1

La diferencia radica en su uso. Las comillas simples se usan principalmente para referir una cadena en WHERE, HAVING y también en algunas funciones SQL incorporadas como CONCAT, STRPOS, POSITION, etc.

Cuando desee utilizar un alias que tenga espacio en el medio, puede usar comillas dobles para referirse a ese alias.

Por ejemplo

(select account_id,count(*) "count of" from orders group by 1)sub 

Aquí hay una subconsulta de una tabla de pedidos que tiene account_id como clave externa que estoy agregando para saber cuántos pedidos realizó cada cuenta. Aquí le he dado a una columna cualquier nombre aleatorio como "recuento de" por el propósito.

Ahora escribamos una consulta externa para mostrar las filas donde "cuenta de" es mayor que 20.

select "count of" from 
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;

Puede aplicar el mismo caso a las expresiones de tabla común también.

Ayushh Srivastava
fuente