gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:20:30 25 4
gpt4 key购买 nike

我有一个 SQL Server 表,它有 625 个列,这些列是用不同的数据类型创建的,例如 intvarchar(25)decimal(18, 2)等...

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

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

期待您的回复。

最佳答案

没有一个单一的“魔法”子弹可以做到这一点——这是一个相当不寻常的操作,所以它不受原生支持。

您可以做的是从系统目录 View 遍历表的列,即时创建这样的 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 替换为您的实际表名 - 您应该可以开始了!首先在您的实时数据副本测试!

关于sql - 单个 SQL 查询一次性更新表中所有列的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com