web-dev-qa-db-fra.com

[] crochets dans les instructions SQL

Que font les crochets dans une instruction SQL?

Par exemple, dans la déclaration: 

insérer dans table1 ([nomcolonne1], nomcolonne2) valeurs (val1, val2)

De plus, que fait-il si le nom de la table est entre parenthèses?

26
Adam Lerman

Le [] marque la délimitation d'un identifiant. Par conséquent, si vous avez une colonne dont le nom contient des espaces tels que Order Qty, vous devez la mettre entre [], comme suit:

select [Order qty] from [Client sales]

Ils doivent également échapper aux mots-clés réservés utilisés comme identificateurs

43
albertein

Syntaxe non standard de Microsoft SQL Server pour les "identificateurs délimités". SQL prend en charge les délimiteurs d'identificateurs permettant aux noms de table, noms de colonne ou autres objets de métadonnées de contenir les éléments suivants:

  • Mots réservés SQL: "Order"
  • Mots contenant des espaces: "Quantité commandée"
  • Mots contenant des signes de ponctuation: "Quantité commandée"
  • Mots contenant des caractères internationaux
  • Noms de colonnes sensibles à la casse : "Order" vs. "order"

Microsoft SQL Server utilise les crochets, mais il ne s'agit pas de la syntaxe standard utilisée par SQL pour les identificateurs délimités. Normalement, les doubles guillemets doivent être utilisés pour les délimiteurs.

Dans Microsoft SQL Server, vous pouvez activer un mode pour utiliser les guillemets standard pour les délimiteurs comme suit:

SET QUOTED_IDENTIFIER ON;
13
Bill Karwin

Ils sont destinés à échapper aux mots clés réservés ou aux identificateurs de colonne non valides.

CREATE TABLE test
(
  [select] varchar(15)
)

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
5
Jorge Ferreira

Ils vous permettent d’utiliser des mots-clés (tels que date ) dans le nom de la colonne, de la table, etc ...

Comme il s'agit d'une mauvaise pratique pour commencer, ils ne sont généralement pas inclus. Le seul endroit où vous devriez les voir utilisés est réservé aux personnes qui commencent par des requêtes SQL qui ne connaissent pas mieux. Autre que cela, ils encombrent votre requête.

2
Ty.

Tout ce qui est entre crochets est considéré comme un identifiant unique (par exemple [machine de test]. Ceci peut être utilisé pour insérer des noms avec des espaces ou pour échapper à des mots de réserve (par exemple [ordre], [sélectionner], [groupe]).

1
Orion Adrian

Ce sont simplement des délimiteurs qui vous permettent de mettre des caractères spéciaux (comme des espaces) dans le nom de la colonne ou de la table , Par exemple. 

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)
0
Darrel Miller

si vous utilisez un nom de colonne identique à un mot clé réservé de SQL, vous pouvez le mettre entre crochets pour distinguer le nom de colonne personnalisé du mot clé réservé existant.

0
sumon

Lorsque vous avez des noms de table ou des noms de fichiers avec des espaces ou des tirets (-), etc., vous pouvez recevoir "Erreur systax dans la clause FROM". Utilisez des crochets [] pour résoudre ce problème. 

Voir: https://msdn.Microsoft.com/en-us/library/ms175874.aspx

0
juFo