我有一张桌子,我有下面的栏目
[Index], [Length],[N1],[N2]....[N99]
现在,可以只选择[N2]] ... [N29]
列,而无需编写所有名称。
答案 0 :(得分:2)
不,这是不可能的。您需要明确列出要返回的列的子集。
答案 1 :(得分:1)
如果不写所有名字,这是不可能的。
答案 2 :(得分:1)
您当然可以从对象浏览器中拖放所有列,然后删除您不想要的列。至少你没有这种方式;没有任何错别字。
我会担心有很多列的表的设计。通常,如果他们真的是N1-N99。您可能需要重新设计相关表格。宽表也可能导致性能问题。
答案 3 :(得分:0)
使用动态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)
答案 4 :(得分:0)
这个怎么样:
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)