删除现有 SQL Server 表中的所有列

问题描述 投票:0回答:3

我需要删除 SQL Server 现有表中的所有列。可以通过指定每个列名称来删除列。我想删除每一列而不指定列名。我正在寻找类似

的东西
ALTER TABLE tblUser DROP COLUMN *;

有什么已知的方法可以做到这一点吗?

sql-server ddl
3个回答
2
投票

从字面上回答你的问题,不,你不能。如果您尝试删除最后一列,SQL Server 将抛出以下错误:

消息 4923,级别 16,状态 1,第 12 行

ALTER TABLE DROP COLUMN 失败,因为“Id”是表“NoColumns”中唯一的数据列。 一张表必须至少有一个数据列。

因此,如果你真的想解决你的问题,不管是什么,最好说出最初的问题,而不是你决定追求的解决方案。


0
投票

而不是删除所有列,您可以删除表格

DROP TABLE TABLENAME

或者您可以在 Alter 查询中提及所有列名

ALETR TABLE TableName DROP COLUMN Column1, Column2, Column3....ColumnN

0
投票
SELECT COLUMN_NAME INTO #result FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME= N'tablename' AND COLUMN_NAME != 'Guid' -- or id
DECLARE @sql NVARCHAR(MAX) = '';
DECLARE @colNames NVARCHAR(MAX) = '';
SELECT @colNames += '['+ r.COLUMN_NAME + ']' +',' from #result r;
SET @colNames = LEFT(@colNames,LEN(@colNames)-1)
DROP TABLE #result;
SET @sql = 'ALTER TABLE tablename DROP COLUMN ' + @colNames;
EXEC sp_executesql @sql
© www.soinside.com 2019 - 2024. All rights reserved.