Perché "Ricerca" è colorato come una parola riservata di funzione in SQL Server?


14

In SSMS 2208, l'identificatore "Ricerca" è di colore rosa caldo come se fosse una funzione (stesso colore, ad esempio, "Potenza" o "Converti"). Perché?

Non riesco a trovarlo nell'elenco ufficiale delle parole riservate . Le ricerche sul web sembrano inutili in quanto ci sono un sacco di termini di "ricerca" là fuori che non hanno nulla a che fare con la mia domanda.


1
Tutto quello che riesco a pensare è la funzione SSRS Lookup () ( msdn.microsoft.com/en-us/library/ee210531.aspx ). Buona domanda. +1
Thomas Stringer

@Shark bella scoperta, ma mi aspetto che altre funzioni seguano regole simili, ma non si evidenziano in SSMS, ad esempio COUNTDISTINCT, COUNTROWSe RUNNINGVALUEdovrebbero funzionare allo stesso modo.
Aaron Bertrand

Risposte:


14

All'inizio ho pensato che provenisse da Sybase (che è dove ovviamente è nato SQL Server), che ha una funzione di ricerca , ma questo è legato a PowerBuilder. E poi ho controllato SQL Server 2000 e non si illumina in rosa in Query Analyzer ...

inserisci qui la descrizione dell'immagine

... se fosse un'eredità di Sybase, mi sarei aspettato che fosse nell'elenco delle parole con codice colore da sempre. È possibile, suppongo, che il file grammaticale sia stato aggiornato e che sia stato omesso "per errore" nel 2000, ma ne dubito. È molto più probabile che sia colorato perché è elencato nel servizio linguistico T-SQL come una parola di compatibilità futura, oppure è stato lanciato nel servizio linguistico in previsione dell'uso. (Sto aspettando la conferma ufficiale di questo, e condividerò ciò che posso.)

Alcuni altri esempi divertenti ( mi sono lamentato di alcuni di questi su Connect nel 2008 , ma è stato chiuso come non risolto) di evidenziazione inappropriata di parole che non sono anche nell'elenco che citi:

  • Domains si illumina in verde
  • Description si illumina in blu
  • Server si illumina in blu
  • Instead si illumina in blu
  • RC2e si RC4accendono in blu

inserisci qui la descrizione dell'immagine

Al momento non ho catturato esempi Lookupo Instead, e sono sicuro che ce ne sono anche altri. Anche se immagino che il documento che stai guardando non sia aggiornato come potrebbe essere; per lo meno, INSTEADdovrebbe essere in quella lista poiché ora fa parte di T-SQL (da quando sono stati introdotti i trigger INSTEAD OF). Scommetto che ci sono almeno altre 20 parole chiave che sono state aggiunte per SQL Server 2012 ma che non sono anche in quella lista. Scansione rapidamente ci sono alcune esclusioni importanti che dovrebbero essere lì: OFFSET, IIF, FORMAT, etc.

Un altro esempio che potresti trovare interessante; prova a mettere una parola come INSTEADin una stringa ma sulla sua stessa riga. Funziona bene ma non sembra che lo farà:

SELECT 'foo 
INSTEAD
';

inserisci qui la descrizione dell'immagine

(Questo per gentile concessione di un bug archiviato da @JonSeigel .)

Probabilmente ho archiviato e commentato un paio di dozzine di altri bug contro l'evidenziazione della sintassi di Management Studio ; non è certo perfetto. Apprezzo che tu voglia sapere perché, ma alla fine potremmo non scoprirlo. Come puoi vedere da molti di questi elementi di Connect, di solito li ignorano / li rimandano o li risolvono senza troppe spiegazioni.


2
Mi sono dimenticato di quelli! Mi sono imbattuto nella tua richiesta Connect qualche tempo fa.
ErikE

A proposito, "INSTEAD" ha un senso dato che i trigger possono essere INSTEAD OF UPDATE. Ma non è una parola riservata ...
ErikE

@ErikE Ho evidenziato "invece" perché è una parola chiave, non solo nell'elenco (un altro brandello di prove del fatto che è gravemente obsoleto).
Aaron Bertrand

"site" viene evidenziato in blu e non è nell'elenco delle parole chiave riservate
Simon D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.