Чому "Пошук" забарвлений як функція, зарезервоване слово у SQL Server?


14

У SSMS 2208 ідентифікатор "Пошук" пофарбований у гарячий рожевий колір, як ніби це функція (такого ж кольору, як, скажімо, "Харчування" або "Перетворити"). Чому?

Я не можу знайти його в офіційному списку зарезервованих слів . Пошуки в Інтернеті здаються марними, оскільки там існує дуже багато термінів "пошуку", які не мають нічого спільного з моїм запитанням.


1
Я думаю тільки про функцію пошуку SSRS () ( msdn.microsoft.com/en-us/library/ee210531.aspx ). Гарне питання. +1
Thomas Stringer

@Shark приємно знайти, але я б очікував, що інші функції будуть дотримуватися подібних правил, але вони не виділяються в SSMS, наприклад COUNTDISTINCT, COUNTROWSі RUNNINGVALUEповинні працювати так само.
Аарон Бертран

Відповіді:


14

Спочатку я подумав, що він походить із Sybase (саме тут походить SQL Server), який має функцію пошуку , але це пов'язано з PowerBuilder. А потім я перевірив SQL Server 2000, і він не світиться рожевим кольором у Query Analyzer ...

введіть тут опис зображення

... якби це було у спадок від Sybase, я б очікував, що воно буде в списку кольорових слів усі разом. Можливо, я вважаю, що файл граматики було оновлено, і він був помилково пропущений у 2000 році, але я сумніваюся. Набагато ймовірніше, що він кольоровий, тому що він занесений до мовної служби T-SQL як майбутнє слово сумісності, або його було кинуто в мовну службу в очікуванні його використання. (Я чекаю офіційного підтвердження цього, і поділюся тим, що можу.)

Деякі інші цікаві приклади ( я скаржився на декілька з них на Connect ще у 2008 році , але це було закрито, як це не виправлено) на невідповідне виділення слів, яких також немає у списку, який ви цитуєте:

  • Domains загоряється зеленим кольором
  • Description загоряється синім кольором
  • Server загоряється синім кольором
  • Instead загоряється синім кольором
  • RC2і RC4світиться синім кольором

введіть тут опис зображення

У той час я не захопити Lookupабо Insteadприклади, і я впевнений , що є деякі інші , а також. Хоча я здогадуюсь, що документ, який ви переглядаєте, не є настільки актуальним, як міг би бути; принаймні, INSTEADмає бути у цьому списку, оскільки він є частиною T-SQL зараз (з моменту введення тригерів INSTEAD OF). Надіюсь, що принаймні 20 інших ключових слів додано для SQL Server 2012, але їх також немає в цьому списку. Швидко сканувань є деякі помітні винятки , які повинні бути там: OFFSET, IIF, FORMATі т.д.

Ще один приклад, який вам може здатися цікавим; спробуйте ввести слово, як INSTEADу рядку, але у власному рядку. Це працює нормально, але, схоже, не буде:

SELECT 'foo 
INSTEAD
';

введіть тут опис зображення

(Ця люб'язність про помилку, подану @JonSeigel .)

Я, мабуть, подав і прокоментував кілька десятків інших помилок проти виділення синтаксису Management Studio ; це, звичайно, не ідеально. Я вдячний, що ви хочете знати, чому, але ми можемо не остаточно дізнатися про це. Як видно з багатьох цих елементів Connect, вони зазвичай ігнорують / відкладають їх або виправляють без особливих пояснень.


2
Я забув про них! Я побіг назустріч вашій програмі Connect.
ErikE

До речі, "INSTEAD" має сенс, оскільки тригери можуть бути INSTEAD OF UPDATE. Але це не застережене слово ...
ErikE

@ErikE Я виділив "замість", тому що це ключове слово, просто не в списку (ще одна частка доказів того, що він сильно застарів).
Аарон Бертран

"сайт" виділяється синім кольором і не знаходиться у списку зарезервованих ключових слів
Simon D
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.