¿Por qué se colorea "Buscar" como una palabra reservada de función en SQL Server?


14

En el SSMS 2208, el identificador "Búsqueda" tiene un color rosa intenso como si fuera una función (del mismo color que, por ejemplo, "Encendido" o "Convertir"). ¿Por qué?

No puedo encontrarlo en la lista oficial de palabras reservadas . Las búsquedas en la web parecen inútiles ya que hay muchos términos de "búsqueda" que no tienen nada que ver con mi pregunta.


1
Todo lo que puedo pensar es en la función de búsqueda SSRS () ( msdn.microsoft.com/en-us/library/ee210531.aspx ). Buena pregunta. +1
Thomas Stringer

@Shark nice find, pero esperaría que otras funciones allí sigan reglas similares, pero no se destacan en SSMS, por ejemplo COUNTDISTINCT, COUNTROWSy RUNNINGVALUEdeberían funcionar de la misma manera.
Aaron Bertrand

Respuestas:


14

Al principio pensé que provenía de Sybase (que es donde se originó SQL Server, por supuesto), que tiene una función de búsqueda , pero esto está relacionado con PowerBuilder. Y luego verifiqué SQL Server 2000 y no se ilumina en rosa en el Analizador de consultas ...

ingrese la descripción de la imagen aquí

... si fuera heredado de Sybase, hubiera esperado que estuviera en la lista de palabras codificadas por colores todo el tiempo. Es posible, supongo, que el archivo de gramática se haya actualizado y que se haya omitido "por error" en 2000, pero lo dudo. Es mucho más probable que esté coloreado porque está listado en el Servicio de lenguaje T-SQL como una palabra de compatibilidad futura, o porque fue arrojado al Servicio de lenguaje antes de ser utilizado. (Estoy esperando la confirmación oficial de esto, y compartiré lo que pueda).

Algunos otros ejemplos divertidos ( me quejé de algunos de estos en Connect en 2008 , pero se cerró como No soluciona) de resaltado inapropiado de palabras que tampoco están en la lista que usted cita:

  • Domains se ilumina en verde
  • Description se ilumina en azul
  • Server se ilumina en azul
  • Instead se ilumina en azul
  • RC2y se RC4ilumina en azul

ingrese la descripción de la imagen aquí

En ese momento no capturé los ejemplos Lookupo Instead, y estoy seguro de que también hay otros. Aunque supongo que el documento que estás viendo tampoco está tan actualizado como podría estarlo; como mínimo, INSTEADdebería estar en esa lista ya que ahora es parte de T-SQL (ya que se introdujeron los desencadenantes INSTEAD OF). Apuesto a que hay al menos otras 20 palabras clave que se han agregado para SQL Server 2012 pero que tampoco están en esa lista. Escaneo rápido hay algunas excepciones notables que deben estar allí: OFFSET, IIF, FORMAT, etc.

Otro ejemplo que puede encontrar interesante; intente poner una palabra como INSTEADen una cadena pero en su propia línea. Esto funciona bien pero no parece que lo haga:

SELECT 'foo 
INSTEAD
';

ingrese la descripción de la imagen aquí

(Esta es cortesía de un error presentado por @JonSeigel ).

Probablemente haya archivado y comentado un par de docenas de otros errores contra el resaltado de sintaxis de Management Studio ; Ciertamente no es perfecto. Le agradezco que quiera saber por qué, pero es posible que al final no lo sepamos . Como puede ver en muchos de estos elementos de Connect, generalmente los ignoran / difieren o los arreglan sin mucha explicación.


2
Me olvidé de esos! Me encontré con su envío de Connect hace un tiempo.
ErikE

Por cierto, "INSTEAD" tiene sentido, ya que los desencadenantes pueden serlo INSTEAD OF UPDATE. Pero no es una palabra reservada ...
ErikE

@ErikE Destaqué "en su lugar" porque es una palabra clave, solo que no está en la lista (otra muestra de evidencia de que está muy desactualizada).
Aaron Bertrand

"sitio" se resalta en azul y no está en la lista de palabras clave reservadas
Simon D
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.