298 votes

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

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

1 votes

Quel type/vendeur de Sql ?

202voto

OMG Ponies Points 144785

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 en SQL, mais cela peut varier d'une base de données à l'autre.

Utilisez uniquement des guillemets simples.

C'est l'usage principal de toute façon. Vous pouvez utiliser des guillemets simples pour un alias de colonne - lorsque vous souhaitez que le nom de la colonne auquel vous faites référence dans votre code d'application soit différent du nom de la colonne dans la base de données. Par exemple : PRODUCT.id serait plus lisible sous la forme product_id Vous pouvez donc utiliser l'une des méthodes suivantes :

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

L'un ou l'autre fonctionne avec Oracle, SQL Server, MySQL mais je sais que certains ont dit que l'IDE TOAD semble avoir des difficultés à utiliser l'approche entre guillemets simples.

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

43 votes

Les guillemets sont généralement utilisés pour les noms d'objets (par exemple, le nom de la colonne "Prénom"). Cela fait partie de la norme SQL-92.

0 votes

@LukLed : Vous voulez dire une colonne alias ? Si vous le dites - je n'ai jamais vu et/ou utilisé que le AS column_name ou lorsque vous fournissez l'alias dans la notation guillemets simples après la référence de la colonne. Il faut mettre l'alias entre guillemets simples s'il y a un caractère espace (ce que je ne recommande pas) dans l'alias de la colonne.

22 votes

Non. Je voulais parler des noms de colonnes, mais cela concerne aussi les alias. Je conseille d'utiliser des guillemets doubles pour les alias et les noms comportant des caractères inhabituels, en raison de la norme SQL-92. SELECT * FROM USERS 'Users' ne fonctionne pas dans SQL Server, mais SELECT * FROM USERS "Users" fait.

160voto

EASI Points 1827

Une règle simple qui nous permet de nous rappeler ce qu'il faut utiliser dans tel ou tel cas :

  • [ S ]es guillemets sont pour [ S ]trings Literals (les littéraux de date sont aussi des chaînes de caractères) ;
  • [ D Les guillemets sont pour [ D Identifiants de la base de données ;

Exemples :

INSERT INTO "USERS" ("LOGIN", "PASSWORD", "DT_BIRTH") VALUES ('EDUARDO', '12345678', '1980-09-06');

Dans MySQL et MariaDB, l'option ` (backtick) est le même que celui de la touche " symbole. Et notez que vous ne pouvez pas utiliser " pour les chaînes littérales lorsque votre SQL_MODE a ANSI_QUOTES activé.

7 votes

Pour clarifier, le backtick (`) peut être utilisé pour délimiter les identifiants, que ANSI_QUOTES soit activé ou non, mais si ANSI_QUOTES est activé, alors "vous ne pouvez pas utiliser les guillemets doubles pour citer des chaînes littérales, car cela est interprété comme un identifiant." ( source ). (Tout ceci suppose que vous parlez de MySQL, attention).

3 votes

Mais [ S ]es guillemets sont également pour [ D Des littéraux. :-/

2 votes

Les littéraux de date sont considérés comme des chaînes de caractères dans la plupart des SGBD.

73voto

Bill Karwin Points 204877

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

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

Voir aussi :

Vous pouvez faire en sorte que MySQL utilise les guillemets doubles conformément à la norme ANSI :

SET GLOBAL SQL_MODE=ANSI_QUOTES

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

SET QUOTED_IDENTIFIER ON

44voto

MarkR Points 37178

Dans le langage SQL ANSI, les guillemets doubles encadrent les noms d'objets (par exemple, les tables), ce qui leur permet de contenir des caractères non autorisés par ailleurs, ou d'être identiques à des mots réservés (à éviter absolument).

Les guillemets simples sont réservés aux chaînes de caractères.

Cependant, MySQL ne tient pas compte de la norme (à moins que son SQL_MODE ne soit modifié) et permet de les utiliser de manière interchangeable pour les chaînes de caractères.

En outre, Sybase et Microsoft utilisent également des crochets pour la citation des identifiants.

C'est donc un peu spécifique aux fournisseurs.

D'autres bases de données, comme Postgres et IBM, adhèrent en fait à la norme ansi :)

4 votes

MySql utilise le backtick ` pour la citation des identifiants. (juste pour compléter)

1 votes

Exemple : Si vous voulez nommer une colonne Postgres "date" (qui est réservée), vous devrez la mettre entre guillemets.

-1voto

naivists Points 15639

Les guillemets doubles ne fonctionnent pas dans plusieurs produits du serveur SQL (MySQL, Microsoft SQL Server), sauf s'ils sont activés.

Par exemple, dans SQL Server, vous devez SET QUOTED_IDENTIFIER ON au début de votre script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X