我有一个 SQL Server 表,它有 625 个列,这些列是用不同的数据类型创建的,例如 int
、varchar(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/