我有有不同的数据类型一样创建625列的SQL Server表int,varchar(25),decimal(18, 2),等…
int
varchar(25)
decimal(18, 2)
现在对将所有列的数据类型更改为感兴趣varchar(255)。是否有一个SQL Server查询可以一次更改一个表中所有列的数据类型,而不是一个一个地对所有列执行下面的查询?
varchar(255)
ALTER TABLE dbo.Employee ALTER COLUMN FirstName VARCHAR(255) NOT NULL
期待您的回应。
没有一个单独的“魔术”项目符号可以执行此操作-这是非常不寻常的操作,因此它本身不受支持。
您可以做的是从系统目录视图中遍历表的列,动态创建这样的ALTER语句,然后执行它-像这样:
DECLARE AlterTableCursor CURSOR FAST_FORWARD FOR SELECT AlterCmd = 'ALTER TABLE dbo.YourTableNameHere ALTER COLUMN ' + name + ' VARCHAR(255) NULL' FROM sys.columns WHERE object_id = OBJECT_ID('dbo.YourTableNameHere') DECLARE @AlterTableCmd NVARCHAR(200) OPEN AlterTableCursor FETCH NEXT FROM AlterTableCursor INTO @AlterTableCmd WHILE @@FETCH_STATUS = 0 BEGIN EXEC (@AlterTableCmd) FETCH NEXT FROM AlterTableCursor INTO @AlterTableCmd END CLOSE AlterTableCursor DEALLOCATE AlterTableCursor
YourTableNameHere用您的实际表名替换-,您应该可以使用了!首先 在您的实时数据副本* 上进行 测试 ! *
YourTableNameHere