我必须删除多个名为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;
但我在+
标志
'+'
附近的语法不正确
有什么问题?
答案 0 :(得分:1)
如果您有数字值(例如1,2,....,20),则应使用INT
数据类型(不 { {1}} - 此外,定义CHAR
没有显式长度定义正好1个字符长度的字符串 - 通常不你想要什么 - 习惯总是明确定义任何CHAR
,CHAR
等字符串类型的长度!)。
另外:如果你想组合字符串和int,你需要显式地将int转换为字符串--T-SQL不会隐式地为你执行此操作。
要完成:您需要使用动态SQL 来处理这种情况 - 您无法在不诉诸动态SQL的情况下定义要删除的列名。
试试这段代码:
VARCHAR