SQL Serverで「ルックアップ」が関数の予約語として色付けされているのはなぜですか?


14

SSMS 2208では、識別子「Lookup」は、あたかも関数であるかのようにホットピンク色になっています(たとえば、「Power」または「Convert」と同じ色)。どうして?

予約語の公式リストにはありません。Webでの検索は、私の質問とは関係のない「ルックアップ」用語が非常に多いため、役に立たないように見えます。


1
私が考えることができるのは、SSRS Lookup()関数(msdn.microsoft.com/en-us/library/ee210531.aspx)だけです。良い質問。+1
トーマスストリンガー

素敵な発見を@Sharkが、私は同様のルールが従うことを他の機能を期待するが、彼らは例えば、SSMSでハイライト表示されませんCOUNTDISTINCTCOUNTROWSRUNNINGVALUE同じように動作するはずです。
アーロンバートランド

回答:


14

最初は、検索機能を備えた Sybase(もちろんSQL Serverの起源)から来たと思いましたが、これはPowerBuilderに関連しています。そして、SQL Server 2000を確認しましたが、クエリアナライザーでピンク色に点灯しません...

ここに画像の説明を入力してください

... Sybaseからのレガシーである場合、色分けされた単語のリストにずっと含まれていると予想していました。2000年に文法ファイルが更新され、「誤って」省略された可能性はありますが、私はそれを疑っています。将来の互換性の単語としてT-SQL言語サービスにリストされているか、使用されると予想して言語サービスにスローされたため、色が付いている可能性がはるかに高くなります。(私はこれの公式確認を待っています、そして、私ができることを共有します。)

他の楽しい例(2008年にConnectでこれらのいくつかについて不満を言っていましたが、引用リストにない単語の不適切な強調表示の不満としてクローズされました):

  • Domains 緑色に点灯
  • Description 青色に点灯
  • Server 青色に点灯
  • Instead 青色に点灯
  • RC2そしてRC4青の光アップ

ここに画像の説明を入力してください

当時、私は捉えていなかったLookupInsteadの例を、と私はいくつか他の人が同様にあると確信しています。あなたが見ている文書は、最新のものではないかもしれないと推測していますが。INSTEAD(INSTEAD OFトリガーが導入されたため)少なくともT-SQLの一部であるため、少なくともこのリストに含まれている必要があります。SQL Server 2012用に追加された他のキーワードは少なくとも20あるが、そのリストにも含まれていないに違いない。素早くスキャンがなければならないいくつかの注目すべき除外がありますOFFSETIIFFORMAT、など

あなたが面白いと思うかもしれない別の例; INSTEAD文字列のように、それ自体の行に単語を入れてみてください。これは正常に実行されますが、次のようには見えません。

SELECT 'foo 
INSTEAD
';

ここに画像の説明を入力してください

(これは@JonSeigelによって提出されたバグの礼儀です。)

私はおそらくましManagement Studioでのシンタックスハイライトに対するダース他のバグのカップルに出願されたとコメントし、確かに完璧ではありません。理由を知りたいと思いますが、最終的にはわかりません。これらの多くのConnectアイテムからわかるように、通常、それらは無視/延期するか、あまり説明することなく修正します。


2
それらを忘れてしまった!しばらく前にConnectの提出に出くわしました。
エリック

ちなみに、トリガーはである可能性があるため、「INSTEAD」の種類は理にかなっていますINSTEAD OF UPDATE。しかし、それは予約語...ではありません
ErikE

@ErikE「代わりに」を強調したの、それリストに載っていないだけのキーワードだからです(ひどく古くなっているという証拠もあります)。
アーロンバートランド

「サイト」が青で強調表示され、予約済みキーワードリストにない
サイモンD 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.