我有一个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
-您应该一切顺利! 首先在您的实时数据的副本上测试此!