SQL - 使用WHILE循环删除多个列

时间:2017-03-18 21:43:12

标签: sql sql-server

我必须删除多个名为Column x的列,其中x是一个从20到100的数字。

我正在尝试使用此代码:

DECLARE @cnt CHAR = 20;

WHILE @cnt < 101
BEGIN
   ALTER TABLE dbo.CSP_Collection_CSV DROP COLUMN "Column " + @cnt;
   SET @cnt = @cnt + 1;
END;

但我在+标志

附近收到错误消息
  

'+'

附近的语法不正确

有什么问题?

1 个答案:

答案 0 :(得分:1)

如果您有数字值(例如1,2,....,20),则应使用INT数据类型( { {1}} - 此外,定义CHAR 没有显式长度定义正好1个字符长度的字符串 - 通常你想要什么 - 习惯总是明确定义任何CHARCHAR等字符串类型的长度!)。

另外:如果你想组合字符串和int,你需要显式地将int转换为字符串--T-SQL不会隐式地为你执行此操作。

要完成:您需要使用动态SQL 来处理这种情况 - 您无法在不诉诸动态SQL的情况下定义要删除的列名。

试试这段代码:

VARCHAR