小编典典

单个SQL查询可一次性更新表中所有列的数据类型

sql

我有有不同的数据类型一样创建625列的SQL Server表intvarchar(25)decimal(18, 2),等…

现在对将所有列的数据类型更改为感兴趣varchar(255)。是否有一个SQL
Server查询可以一次更改一个表中所有列的数据类型,而不是一个一个地对所有列执行下面的查询?

ALTER TABLE dbo.Employee 
ALTER COLUMN FirstName VARCHAR(255) NOT NULL

期待您的回应。


阅读 147

收藏
2021-04-28

共1个答案

小编典典

没有一个单独的“魔术”项目符号可以执行此操作-这是非常不寻常的操作,因此它本身不受支持。

您可以做的是从系统目录视图中遍历表的列,动态创建这样的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用您的实际表名替换-,您应该可以使用了!首先 在您的实时数据副本* 上进行 测试*

2021-04-28