从查询中删除列

时间:2018-07-27 09:22:02

标签: sql-server

我有几个表,总是有4列,还有不确定数量的列,这些列是用随机名称自动生成的。假设“ SELECT * EXCEPT xyzcol”不存在,那么仅检索自动生成的列的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

由于您不知道列名,因此应该保持动态。

DECLARE @SQL VARCHAR(MAX)='';

SELECT @SQL = @SQL+QUOTENAME(COLUMN_NAME)+',' FROM (
SELECT COLUMN_NAME,ORDINAL_POSITION FROM 
INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME ='ADDRESS'
AND ORDINAL_POSITION>4 --SKIPPING FIXED 4 COLUMNS HERE
)A
ORDER BY ORDINAL_POSITION

SELECT @SQL = 'SELECT '+LEFT(@SQL,LEN(@SQL)-1)+ ' FROM [ADDRESS]'

EXEC(@SQL)

我将始终为创建INSERT脚本提供一个动态脚本,以便在支持日内快速插入。