web-dev-qa-db-fra.com

Quelle est la différence entre les guillemets simples et doubles en SQL?

Quelle est la différence entre guillemets simples et doubles guillemets en SQL?

185
Vineet

Les guillemets simples sont utilisés pour indiquer le début et la fin d'une chaîne en SQL. Les guillemets doubles ne sont généralement pas utilisés dans SQL, mais cela peut varier d'une base de données à l'autre.

S'en tenir à utiliser des guillemets simples.

C'est l'utilisation principale de toute façon. Vous pouvez utiliser des guillemets simples pour un alias de colonne. Vous souhaitez que le nom de colonne que vous référencez dans votre code d'application soit différent de ce que la colonne est réellement appelée dans la base de données. Par exemple: PRODUCT.id serait plus lisible en tant que product_id, vous utiliserez donc l’un des éléments suivants:

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

Cela fonctionne sous Oracle, SQL Server, MySQL… mais je sais que certains ont dit que le TOAD IDE semblait donner quelques problèmes lorsque l'on utilisait l'approche des guillemets simples.

Vous devez utiliser des guillemets simples lorsque l'alias de colonne comprend un caractère d'espacement, par exemple, product id, mais il n'est pas recommandé de définir un alias de colonne sur plus d'un mot.

121
OMG Ponies

Les guillemets simples délimitent une constante de chaîne ou une constante de date/heure.

Les guillemets doubles délimitent les identifiants pour, par exemple. noms de table ou noms de colonne. Cela n'est généralement nécessaire que lorsque votre identifiant ne correspond pas aux règles des identifiants simples.

Voir également:

Vous pouvez faire en sorte que MySQL utilise des guillemets doubles selon la norme ANSI:

SET GLOBAL SQL_MODE=ANSI_QUOTES

Vous pouvez faire en sorte que Microsoft SQL Server utilise des guillemets doubles conformément à la norme ANSI:

SET QUOTED_IDENTIFIER ON
59
Bill Karwin

Deux règles simples pour nous rappeler quoi utiliser, dans quel cas:

  • Les guillemets [S] sont destinés aux trings [S]; [D] guillemets sont utilisés pour les identifiants de [D] atabase; 
  • Le symbole `est identique au symbole" . Vous pouvez utiliser "avec ANSI_QUOTES activé.

Dans ANSI SQL, les guillemets doubles citent des noms d’objets (tables, par exemple) qui leur permettent de contenir des caractères non autorisés ou d’être identiques aux mots réservés (Evitez cela, vraiment).

Les guillemets simples sont pour des chaînes.

Cependant, MySQL est inconscient de la norme (à moins que SQL_MODE ne soit modifié) et leur permet d'être utilisés de manière interchangeable pour des chaînes.

De plus, Sybase et Microsoft utilisent également des crochets pour indiquer les identifiants.

Donc, c'est un peu spécifique au vendeur. 

D'autres bases de données telles que Postgres et IBM adhèrent à la norme Ansi :)

32
MarkR

J'utilise ce mnémonique:

  • Les guillemets simples sont pour des chaînes (une chose)
  • Les guillemets doubles sont pour les noms de tables et les noms de colonnes (deux choses)

Ce n'est pas correct à 100% selon les spécifications, mais ce mnémonique m'aide (être humain).

6
guettli

La différence réside dans leur utilisation. Les guillemets simples sont principalement utilisés pour référencer une chaîne dans WHERE, HAVING et également dans certaines fonctions SQL intégrées telles que CONCAT, STRPOS, POSITION etc.

Lorsque vous souhaitez utiliser un alias comportant un espace, vous pouvez utiliser des guillemets doubles pour faire référence à cet alias.

Par exemple

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

Voici une sous-requête d'une table d'ordres ayant account_id comme clé étrangère que je suis en train d'agréger pour savoir combien d'ordres ont été placés pour chaque compte. Ici, j’ai donné à une colonne un nom quelconque comme "compte de" de manière aléatoire. 

Écrivons maintenant une requête externe pour afficher les lignes où "nombre de" est supérieur à 20.

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

Vous pouvez également appliquer la même casse aux expressions de la table commune. 

0
Ayushh Srivastava