2013-08-12 1 views
4

Je comprends que les crochets permettent l'utilisation de noms réservés ou de caractères précédemment interdits tels que des espaces dans vos identifiants. Je pensais que les ajouter partout était une bonne pratique. (Voir What is the use of the square brackets [] in sql statements?)Quand les crochets ne doivent-ils pas être utilisés?

Cependant, je remarque que lorsque je les utilise dans la fonction col_length, je reçois des résultats inattendus:

SELECT COL_LENGTH(N'[TestTable]', N'[RatingID]') -- Returns NULL 
SELECT COL_LENGTH(N'TestTable', N'[RatingID]')  -- Returns NULL 
SELECT COL_LENGTH(N'[TestTable]', N'RatingID')  -- Returns 10 
SELECT COL_LENGTH(N'TestTable', N'RatingID')  -- Returns 10 

Je peux voir que, en définissant le nom de colonne dans des guillemets simples, la place les crochets deviennent redondants, mais je ne comprends pas pourquoi ils rompent l'appel. Que les crochets fonctionnent pour l'argument de la table augmente ma confusion.

Existe-t-il une règle pour l'utilisation des crochets ?

+0

Vous ne voulez pas non plus utiliser les parenthèses aveC#temp. Au moins, j'ai eu des problèmes avec les parenthèses et #temp. – Paparazzi

Répondre

2

Ne pas passer les crochets dans les fonctions qui utilisent des chaînes uniquement dans les instructions SQL réelles. La fonction recherche une table avec le nom incluant les crochets.

+0

À droite, SQL Server va appliquer 'QUOTENAME()' à l'intérieur de certaines fonctions. Le problème est que c'est inconsistant - parfois c'est le cas, parfois non. Je ne connais pas de liste pratique qui distingue ... –

Questions connexes