为什么在SQL Server中将“查找”着色为功能保留字?


14

在SSMS 2208中,标识符“ Lookup”被涂成粉红色,就好像它是一个函数(与“ Power”或“ Convert”相同)。为什么?

我在保留字正式清单中找不到它。网络上的搜索似乎毫无用处,因为那里有很多与我的问题无关的“查找”字词。


1
我能想到的就是SSRS Lookup()函数(msdn.microsoft.com/en-us/library/ee210531.aspx)。好问题。+1
Thomas Stringer

@Shark很不错,但是我希望那里的其他功能遵循类似的规则,但是它们不会在SSMS中突出显示,例如COUNTDISTINCTCOUNTROWS并且RUNNINGVALUE应该以相同的方式工作。
阿龙贝特朗

Answers:


14

起初我以为它来自Sybase(当然是SQL Server的发源地),它具有查找功能,但这与PowerBuilder有关。然后我检查了SQL Server 2000,在查询分析器中它没有显示为粉红色...

在此处输入图片说明

...如果它是Sybase遗留下来的,我希望它一直在用颜色编码的单词列表中。我想语法文件可能会被更新,并且在2000年被“错误地”省略了,但我对此表示怀疑。它很可能是彩色的,因为它在T-SQL语言服务中被列为将来的兼容性单词,或者由于预期被使用而被扔到语言服务中。(我正在等待对此的正式确认,我将尽我所能。)

其他一些有趣的例子(我在2008年的Connect上抱怨其中的一些例子,但由于无法解决而被关闭),这些词也被高亮地出现在您未引用的列表中:

  • Domains 以绿色点亮
  • Description 亮蓝色
  • Server 亮蓝色
  • Instead 亮蓝色
  • RC2RC4以蓝色点亮

在此处输入图片说明

当时我没有捕捉到LookupInstead示例,但我敢肯定还有其他示例。尽管我猜测您正在查看的文档不是最新的,但可能是最新的。至少INSTEAD应列入该列表,因为它现在是T-SQL的一部分(因为引入了INSTEAD OF触发器)。我敢打赌,至少为SQL Server 2012添加了20个其他关键字,但这些关键字也不在该列表中。快速扫描也有一些明显的例外,应该是有:OFFSETIIFFORMAT,等。

您可能会发现另一个有趣的例子。尝试将类似INSTEAD字符串的单词放在一行中。这可以很好地运行,但是看起来却不是这样:

SELECT 'foo 
INSTEAD
';

在此处输入图片说明

(这是@JonSeigel提交的错误的致谢。)

我可能已经针对Management Studio的语法突出显示提出了许多其他错误并发表了评论;它当然不是完美的。我感谢您想知道为什么,但我们可能最终找不到答案。从许多这些Connect项目中可以看到,它们通常忽略/推迟它们,或者在没有太多解释的情况下对其进行修复。


2
我忘了那些!不久前,我遇到了您的Connect提交。
ErikE 2012年

顺便说一下,“ INSTEAD”之所以有意义,是因为触发器可以是INSTEAD OF UPDATE。但这不是保留字……
ErikE

@ErikE我强调了“相反”,因为它一个关键字,只是不在列表中(另一种证据表明它已经严重过时)。
亚伦·伯特兰

“站点”以蓝色突出显示,并且不在保留的关键字列表中
Simon D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.