обходной путь для спецификации столбца в предложении select, не имеющего intellisense в ssms, пока вы не укажете таблицу

В ssms IntelliSense не срабатывает при указании имен столбцов в select до тех пор, пока вы не укажете имя таблицы в предложении from.

Это имеет смысл, потому что ssms не может читать ваши мысли.

Однако это головная боль, потому что мы пишем предложение select перед предложением from.

Я не могу точно выразить словами то, что я ищу, но было бы идеально иметь возможность указать предложение from перед предложением select.

Я не хочу, чтобы каждый столбец в базе данных был в списке, очевидно.

То, как обычно пишут оператор sql, довольно странное и громоздкое, с предложением select, стоящим перед предложением «from», что лишает нас преимущества intellisense, если только мы не вернемся к списку столбцов после того, как вы напишете из «tablename». Просто чувствует себя странно и раздражает, и должен быть лучший способ


person Jay Jay Jay    schedule 31.08.2013    source источник
comment
Так чего ты хочешь? Каждый столбец в вашей базе данных должен быть в списке с самого начала? Что делать, если у вас есть EmployeeID в 40 разных таблицах? Что, если вы даже не знаете, какие столбцы находятся в нужной вам таблице? Это требование вообще не имеет для меня никакого смысла. Просто введите SELECT FROM dbo.tablename и вернитесь к списку столбцов.   -  person Aaron Bertrand    schedule 31.08.2013
comment
Я не хочу, чтобы каждый столбец в базе данных был в списке, очевидно. Я просто указал, что способ, которым обычно пишут оператор sql, довольно странный и громоздкий, с предложением select, идущим перед столбцом, что лишает нас преимущества intellisense, если мы не делаем то, что вы говорите, а именно вернуться к списку столбцов после того, как вы напишете из 'tablename'. Просто чувствует себя странно и раздражает, и должен быть лучший способ   -  person Jay Jay Jay    schedule 31.08.2013
comment
Ну, откровенно говоря, способ построения языка SQL был определен за десятилетия до того, как IntelliSense вообще стала концепцией. Нет лучшего способа, если вы не хотите написать свой собственный синтаксический анализатор для T-SQL, который будет анализировать что-то вроде FROM dbo.table SELECT .... Я согласен с вами, что это был бы более естественный способ написания запросов, но это не делает его возможным.   -  person Aaron Bertrand    schedule 31.08.2013


Ответы (1)


Вы не можете изменить способ, которым SQL Server анализирует оператор SELECT. Однако вы можете изменить способ его написания. Просто пиши:

FROM dbo.tablename

Затем переместите курсор выше и введите SELECT, после чего у вас появится IntelliSense.

Еще одна действительно хакерская и плохая идея:

;WITH x AS (SELECT * FROM dbo.tablename)
SELECT ... FROM x;

Но это очень плохие новости, и вам все равно придется набирать все это, прежде чем Management Studio сможет прочитать ваши мысли.

Извините, но вы ищете несуществующий ответ.

person Aaron Bertrand    schedule 31.08.2013
comment
смешной. предложение from, стоящее перед предложением select, — это то, что мы имеем в С# linq. Очень жаль, что у нас нет такого же в ssms. - person Jay Jay Jay; 31.08.2013
comment
@JayJayJay порядок предложений в инструкции SELECT не имеет ничего общего с SSMS. C# LINQ переписывает ваш запрос за вас — SSMS этого не делает. Запрос, который они оба отправляют на сервер, по-прежнему должен соответствовать стандарту, а не тому формату, который был бы немного удобнее для вас. - person Aaron Bertrand; 31.08.2013