SQL Server - выберите столбцы из заданного диапазона - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть таблица, где у меня есть столбцы, как показано ниже

[Index], [Length],[N1],[N2]....[N99]

Теперь можно выбрать только [N2]] ... [N29] столбцы без записи всех имен.

Ответы [ 5 ]

2 голосов
/ 13 сентября 2011

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

1 голос
/ 13 сентября 2011

Конечно, вы можете перетащить все столбцы из браузера объектов, а затем удалить те, которые вам не нужны. По крайней мере, так у тебя нет опечаток.

Я был бы обеспокоен дизайном таблицы с таким количеством столбцов. Особенно, если они действительно N1-N99. Вам может понадобиться редизайн связанной таблицы. Также широкие таблицы могут вызвать проблемы с производительностью.

1 голос
/ 13 сентября 2011

Это невозможно без написания всех имен.

0 голосов
/ 13 сентября 2011

Как насчет этого:

DECLARE @columns VARCHAR(MAX), 
        @tablename VARCHAR(255), 
        @from VARCHAR(255), 
        @select VARCHAR(100)

SET @tablename = 'orderheader'

SELECT @columns = STUFF(
(
    SELECT ',[' + column_name + ']'
    FROM information_schema.columns
    WHERE table_name = @tablename
    AND NOT column_name IN ('N2', 'Index', 'Length')
    FOR XML PATH('')
),1, 1, '')

SELECT @select = 'SELECT ', @from = ' from ' + @tablename

EXEC(@select + @columns + @from)
0 голосов
/ 13 сентября 2011

Использование динамического sql - самое близкое к тому, что вы можете не писать столбцы.Вот пример:

declare @sql varchar(max)

select @sql = coalesce(@sql+',', 'select ') + 'n' + cast(number as varchar(2))
from master..spt_values as N 
where type = 'P' and 
number between 2 and 29 

set @sql = @sql + ' from <yourtable>'

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