2012-03-28 12 views
18

Ho una copia di un database esistente con record esistenti. quando stavo giocando con il designer del tavolo e ho notato che alcuni dei nomi delle colonne erano [] attorno a loro. sembrano tutti essere digitati in modo arbitrario (float, datetime, netext, nvarchar ecc.) e non c'è nulla nelle proprietà della colonna che si sbarazza del []. Ho provato a rinominare delete the [] ma riappare non appena esco da edit.Significato delle parentesi quadre [] nel designer di tabelle MS-SQL?

in base al post this, è una colonna di parole chiave per le colonne xml? ma nessuna di queste colonne sono colonne xml. Qualcuno potrebbe gentilmente spiegare lo scopo di questo ad un newbie ms-sql? grazie

risposta

39

Le parentesi quadre [] vengono utilizzate per delimitare gli identificatori. Questo è necessario se il nome della colonna è una parola chiave riservata o contiene caratteri speciali come uno spazio o un trattino.

Alcuni utenti preferiscono utilizzare parentesi quadre anche quando non sono necessarie.

Da MSDN:

identificatori delimitati

sono racchiusi tra virgolette doppie (") o parentesi quadre ([]) identificatori che rispettano le norme per il formato degli identificatori maggio o. non possono essere delimitati.

SELECT * 
FROM [TableX]   --Delimiter is optional. 
WHERE [KeyCol] = 124 --Delimiter is optional. 

identificatori che non rispettano tutte le regole per gli identificatori devono essere délimité d in un'istruzione Transact-SQL.

SELECT * 
FROM [My Table]  --Identifier contains a space and uses a reserved keyword. 
WHERE [order] = 10 --Identifier is a reserved keyword. 
+2

(Possono citare alcun identificativo, non solo colonne.) –

+0

che ha senso, tutti i nomi di colonna che hanno '[]' hanno anche 'spazio' nei loro nomi. tuttavia, rimuovendo manualmente 'space' e' [] ', il designer di tabelle aggiunge automaticamente' [] '? – Bonk

+1

@YonkShi Probabilmente lo fa per coerenza (non è necessario preoccuparsi se è in conflitto con una parola chiave o contiene caratteri speciali, ecc.), Anche quando non è necessario. A meno che non ci sia un'opzione * di generazione * per disabilitare tale (ad esempio l'impostazione globale?), Rimarrà così com'è. –

1

le parentesi sono caratteri speciali in sql server che vengono utilizzati per delimitare in modo esplicito le informazioni.

possono essere utilizzati in xml come da articolo, possono anche essere utilizzati per specificare meta nomi (colonna, tabella, ecc.) Che hanno spazi o altre parole chiave.

declare my column nvarchar(50) 

sarebbe sintassi non valida, ma si poteva fare

declare [my column] nvarchar(50) 

basti pensare a loro come delimitatori espliciti.

4

parentesi quadre possono essere posizionati intorno agli oggetti (ad esempio visualizzazioni, database, colonne, ecc)

loro scopo primario è, come Mark accennato, per incapsulare gli oggetti in modo che i caratteri speciali, come uno spazio o un periodo di non interferiscano con la tua sintassi.

Molte applicazioni utilizzano per impostazione predefinita la notazione tra parentesi, per ridurre ulteriormente il rischio di errori di sintassi o qualcosa del genere.

è in genere buona pratica di non includere spazi

Database_Name < GOOD PRACTICE 

Database Name < GENERALLY TRY TO AVOID 

In ogni caso, se si utilizza il secondo, è possibile utilizzare le parentesi quadre cioè

select * from [Database Name] 
+1

+1 per "Molte applicazioni per impostazione predefinita utilizzano la notazione tra parentesi, per ridurre ulteriormente il rischio di errori di sintassi" come risposta effettiva. – onedaywhen

Problemi correlati