À quoi servent les crochets [] dans les énoncés sql?

J'ai remarqué que Visual Studio 2008 place des crochets autour des noms de colonne en sql. Faire les crochets offre aucun avantage? Quand je donne le code T-SQL, Je ne m'en suis jamais soucié.

exemple: Visual Studio: Sélectionnez [Colonne1], [Colonne2], etc...

à ma façon: Sélectionnez la Colonne1, la Colonne2, etc...

129
demandé sur antonjs 2008-09-10 01:02:24

9 réponses

les crochets sont nécessaires si vous utilisez des mots-clés ou des caractères spéciaux dans les noms ou les identificateurs de colonne. Vous pouvez nommer une colonne [First Name] (avec un espace)--mais alors vous devez utiliser des parenthèses chaque fois que vous vous référez à cette colonne.

les nouveaux outils les ajoutent partout juste au cas ou pour la cohérence.

138
répondu Michael Haren 2013-07-08 16:03:13

ils sont pratiques si vos colonnes ont les mêmes noms que les mots-clés SQL, ou ont des espaces dans eux.

exemple:

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

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

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

fonctionne très bien.

46
répondu Blorgbeard 2008-09-09 21:07:23

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

Select First Name From People

ne fonctionnerait pas, mais mettre des crochets autour du nom de la colonne fonctionnerait

Select [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.

11
répondu GateKiller 2008-09-09 21:08:10

les noms de colonne peuvent contenir des caractères et des mots réservés qui vont embrouiller le moteur d'exécution des requêtes, donc placer des crochets autour d'eux à tout moment empêche cela de se produire. C'est plus facile que de chercher un problème et de le régler, je suppose.

6
répondu Will 2008-09-09 21:04:36

les crochets peuvent être utilisés lorsque les noms de colonne sont des mots réservés.

si vous générez programmatiquement la déclaration SQL à partir d'une collection de noms de colonnes que vous ne contrôlez pas, alors vous pouvez éviter les problèmes en utilisant toujours les parenthèses.

5
répondu Torlack 2008-09-09 21:03:43

en plus Certaines bases de données Sharepoint contiennent des traits d'Union dans leur nom. L'utilisation de crochets dans les instructions SQL permet d'analyser correctement les noms.

4
répondu HSchlarb 2012-06-22 20:50:34

je crois qu'il les ajoute là pour la cohérence... ils ne sont nécessaires que lorsque vous avez un espace ou un caractère spécial dans le nom de la colonne, mais c'est plus propre de les inclure tout le temps quand L'IDE génère SQL.

3
répondu Jeff Donnici 2008-09-09 21:05:11

peu importe de suivre une convention de nommage qui évite d'utiliser des mots réservés, Microsoft ajoute de nouveaux mots réservés. L'utilisation de crochets permet à votre code d'être mis à jour à une nouvelle version de SQL Server, sans avoir d'abord besoin d'éditer les mots nouvellement réservés de Microsoft hors de votre code client. Cette édition peut être une préoccupation importante. Cela peut entraîner une mise à la retraite prématurée de votre projet....

Les crochets

peuvent aussi être utiles lorsque vous voulez tout remplacer dans un script. Si votre le lot contient une variable nommée @String et une colonne nommée [String], vous pouvez renommer la colonne en [NewString], sans renommer @String en @NewString.

3
répondu Bill 2015-11-07 05:34:03

pendant les âges sombres de SQL dans les années 1990 il était une bonne pratique que les concepteurs de SQL essayaient d'ajouter chaque mot dans le dictionnaire comme mot-clé pour avalanche sans fin de nouvelles fonctionnalités et ils l'ont appelé le projet SQL3.

donc il garde la compatibilité avant.

et j'ai trouvé qu'il a un autre effet secondaire agréable, il aide beaucoup quand vous utilisez grep dans les critiques de code et de reconfiguration.

2
répondu Lothar 2016-06-05 13:17:08