229 votes

Quel est l'usage des crochets [] dans les instructions SQL?

J'ai remarqué que Visual Studio 2008 place des crochets autour des noms de colonnes en SQL. Est-ce que les crochets offrent un avantage ? Quand je code manuellement en T-SQL, je ne les utilise jamais.

Exemple:

Visual Studio:

SELECT [column1], [column2] etc...

Ma méthode:

SELECT column1, column2 etc...

1 votes

C'est une bonne chose que votre SQL codé à la main n'ait jamais eu besoin de parenthèses, votre convention de nommage de base de données devrait exclure les noms nécessitant des parenthèses.

0 votes

La réponse connexe discute du paramètre QUOTED_IDENTIFIER : stackoverflow.com/questions/19657101/…

23 votes

Je pourrais ajouter que les crochets sont une bizarrerie de Microsoft. La norme SQL utilise en réalité des guillemets doubles ("), que Microsoft prend aussi en charge. Si Microsoft avait ressenti le besoin de tout délimiter, il aurait été de meilleure forme d'utiliser les guillemets doubles standard à la place. Mais je suppose que cela aurait rendu trop facile le portage vers un autre SGBD, et cela ne se fera jamais …

248voto

Michael Haren Points 42641

Les crochets sont nécessaires si vous utilisez des mots-clés ou des caractères spéciaux dans les noms de colonnes ou les identifiants. Vous pourriez nommer une colonne [Prénom] (avec un espace) - mais vous devriez alors utiliser des crochets à chaque fois que vous faites référence à cette colonne.

Les outils plus récents les ajoutent partout, juste au cas où ou pour des raisons de cohérence.

7 votes

Est-ce la seule utilité des crochets carrés?

1 votes

@mehow, il semble que ce soit le cas, mais je n'ai pas de référence indiquant cela explicitement.

3 votes

76voto

Blorgbeard Points 38991

Ils sont utiles si vos colonnes ont les mêmes noms que les mots-clés SQL, ou contiennent des espaces.

Exemple:

create table test ( id int, user varchar(20) )

Oh non! Syntaxe incorrecte près du mot-clé 'user'. Mais ceci:

create table test ( id int, [user] varchar(20) )

Fonctionne bien.

0 votes

@Blordbeard Est-ce quelque chose de spécifique à Microsoft SQL Server ou les crochets fonctionnent-ils également de la même manière pour Oracle, mySQL, PostgreSQL, etc.?

6 votes

Les crochets ne sont pas du SQL standard, je ne suis pas sûr quels caractères tous les moteurs de base de données utilisent. Par exemple: MySQL utilise des backticks: stackoverflow.com/questions/2889871/…

12voto

GateKiller Points 19113

Ils sont utiles si vous utilisez (pour une raison quelconque) des noms de colonnes avec certains caractères, par exemple.

Sélectionnez First Name From People

ne fonctionnerait pas, mais en mettant des crochets autour du nom de la colonne, cela fonctionnerait

Sélectionnez [First Name] From People

En bref, c'est une façon de déclarer explicitement un nom d'objet; colonne, table, base de données, utilisateur ou serveur.

7voto

Will Points 76760

Les noms de colonnes peuvent contenir des caractères et des mots réservés qui pourraient perturber le moteur d'exécution de la requête, donc les entourer de crochets tout le temps évite que cela se produise. Plus facile que de vérifier un problème puis de le gérer, je suppose.

4voto

HSchlarb Points 31

De plus Certains bases de données Sharepoint contiennent des tirets dans leurs noms. Utiliser des crochets carrés dans les déclarations SQL permet aux noms d'être analysés correctement.

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