为什么“查找”在 SQL Server 中被着色为函数保留字?

Eri*_*ikE 14 sql-server-2008 ssms reserved-word

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

我在保留字官方列表中找不到它。在网络上搜索似乎毫无用处,因为那里有很多与我的问题无关的“查找”术语。

Aar*_*and 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 触发器)。我敢打赌,至少有 20 个其他关键字已为 SQL Server 2012 添加但不在该列表中。快速扫描也有一些明显的例外,应该是有:OFFSETIIFFORMAT,等。

另一个你可能会觉得有趣的例子;试着把一个词INSTEAD放在一个字符串中,但放在它自己的行上。这运行良好,但看起来不像:

SELECT 'foo 
INSTEAD
';
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

(这是由@JonSeigel 提交的错误提供的。)

我可能已经针对 Management Studio 的语法突出显示提交了几十个其他错误并对其进行了评论;它当然不是完美的。我很感激您想知道原因,但我们最终可能无法找到。正如您从许多这些 Connect 项目中看到的那样,他们通常会忽略/推迟它们,或者在没有太多解释的情况下修复它们。

  • 我忘了那些!不久前,我偶然发现了您提交的 Connect 文件。 (2认同)