Выбор столбца SQL Server 2008 - PullRequest
       3

Выбор столбца SQL Server 2008

1 голос
/ 17 февраля 2011

В SQL Server, если я получил таблицу с примерно 20 столбцами и мне нужно 18 из них, могу ли я сейчас сказать что-то вроде * minus columnname1, columnname2, курса, я пишу их все.

Но если бы вы могли, это было бы намного проще.

Ответы [ 7 ]

3 голосов
/ 22 января 2013

Небольшая подсказка для замены звездочки с именами столбцов в SQL Management Studio в кратчайшие сроки без какого-либо модного плагина:

  1. Выберите ваш письменный запрос (независимо от количества соединений и т. Д.)
  2. Щелкните правой кнопкой мыши и выберите «Проектировать запрос в редакторе ...»
  3. Просто нажмите "ОК"

Звездочка теперь должна быть расширена до имен столбцов:)

Ofc можно выбрать / отменить выбор любого столбца в редакторе запросов.

Hth

2 голосов
/ 17 февраля 2011

Из коробки - нет, это невозможно. Вы должны указать все столбцы, которые вы хотите явно.

В SQL Server Management Studio 2008 есть intellisense, который может помочь вам выбрать столбцы из таблицы - так что это, безусловно, один шаг, чтобы облегчить боль.

Дополнительные инструменты, такие как SQL Prompt , предлагают дополнительную помощь - в SQL Prompt вы можете ввести

SELECT *
FROM dbo.YourTable

и если у вас есть курсор сразу после символа звездочки (*), вы можете нажать <TAB> и развернуть звездочку в списке всех столбцов для этой таблицы (а затем удалить два ненужных столбца ) - или вы можете открыть окно и выбрать те столбцы, которые вам действительно нужны.

enter image description here Очень удобный, очень полезный, очень ускоряющий разработку - но это не бесплатный инструмент .....

2 голосов
/ 17 февраля 2011

Это невозможно. Однако если вы используете SQL Server Management Studio 2008/2005, вы можете щелкнуть правой кнопкой мыши по таблице и выбрать пункт меню «Таблица сценариев как> ВЫБРАТЬ В». Это избавит вас от необходимости набирать имена столбцов или покупать SQL-запрос Red-Gate

1 голос
/ 19 августа 2011

Я хотел бы добавить к ответу «Нет, это невозможно напрямую в SQL». Я бы хотел бы иметь эту функцию тоже! Это отстой, когда вы пытаетесь сделать некоторую быструю отладку для таблицы с 10+ столбцами, у которой есть varbinary (max).

Но я просто хочу указать альтернативу совету Кейна по SSMS 2008 (Sql Server Management Studio).

Если вы откроете обозреватель объектов (щелкните правой кнопкой мыши в окне запроса и выберите «Открыть сервер в обозревателе объектов»), перейдите к узлу для рассматриваемой таблицы. Разверните узел, чтобы увидеть узел «Столбцы». Теперь «перетащите» узел «Столбцы» в окно запроса и «перетащите» его. Он вставит все имена столбцов таблицы - и вы можете использовать его непосредственно в предложении SELECT.

1 голос
/ 17 февраля 2011

Вы можете использовать select TOP (18) * from givenTable, если хотите 18 строк.

Для столбцов такого метода не существует. На самом деле имена столбцов хранятся в главной базе данных, и вы можете извлекать их и составлять запрос, выглядящий так, как вы запрашиваете, НО это будет не проще, чем просто выбрать field1, field2 ... field18 из blaBlaBla.

SELECT table_name=sysobjects.name,
         column_name=syscolumns.name,
         datatype=systypes.name,
         length=syscolumns.length
    FROM sysobjects 
    JOIN syscolumns ON sysobjects.id = syscolumns.id
    JOIN systypes ON syscolumns.xtype=systypes.xtype
   WHERE sysobjects.xtype='U'
         and sysobjects.name='myTableName'
ORDER BY sysobjects.name,syscolumns.colid

выдаст вам список ваших столбцов. Вы можете написать генератор выбора на основе этого запроса.

0 голосов
/ 15 января 2014

Я создал скрипт для легкого копирования / вставки нескольких столбцов, вы можете найти его полезным. Смотри:

http://www.sqlservercentral.com/scripts/102375/

Сценарий подробно объясняется там, но вкратце для тех, у кого нет учетной записи на sqlservercentral: Это хранимая процедура, которую я могу запустить с помощью ярлыка. Введите имя таблицы (также работает с временными таблицами и представлениями), выделите его, нажмите на ярлык, и он отобразит столбцы таблицы. Оттуда вы можете легко скопировать несколько столбцов (столбцы также отображаются с запятой перед именем столбца, что также экономит время при наборе текста) и вставить их в экран запроса.

 CREATE PROCEDURE [dbo].[sp_ColumnSelect]
    @FullObjectName varchar(200)
AS
/*
    Author: Robin van Schaik
    Version: 1.3 (03-OCT-2012)
*/

DECLARE @Object varchar(200)
DECLARE @Schema varchar(200)
DECLARE @Database varchar(200)
DECLARE @IsTempTable bit
-- Break down parameter in Database/Schema/Object
SET @Object = PARSENAME(@FullObjectName,1)
SET @Schema = ISNULL(PARSENAME(@FullObjectName,2),'dbo')
SET @IsTempTable = case when left(@Object,1)='#' then 1 else 0 end
SET @Database = case when @IsTempTable=1 then 'tempdb' else PARSENAME(@FullObjectName,3) end

EXEC(
'SELECT 
    b.Name as ColumnStart
,   '',''+b.Name as ColumnNext
,   ''[''+b.Name+'']'' as ColumnStartBr
,   '',[''+b.Name+'']'' as ColumnNextBr
FROM
' +@Database+'.sys.objects a
INNER JOIN
' +@Database+'.sys.columns b
ON a.object_id=b.object_id
INNER JOIN
' +@Database+'.sys.schemas d
ON a.schema_id=d.schema_id
WHERE
    a.Object_ID=OBJECT_ID('''+@Database+'.'+@Schema+'.'+@Object+''')
AND d.name = '''+@Schema+'''
'
)
0 голосов
/ 17 февраля 2011

Насколько я знаю, это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...