Vik*_*nte 2 sql sql-server sql-server-2005 sql-server-2008
我有有不同的数据类型一样创建625列的SQL Server表int
,varchar(25)
,decimal(18, 2)
,等...
现在我有兴趣将所有列的数据类型更改为varchar(255)
.有没有一个SQL Server查询可以一次性更改表中所有列的数据类型,而不是逐个执行下面所有列的查询?
ALTER TABLE dbo.Employee
ALTER COLUMN FirstName VARCHAR(255) NOT NULL
Run Code Online (Sandbox Code Playgroud)
期待您的回复.
没有一个单一的"神奇"子弹可以做到这一点 - 这是一个相当不寻常的操作,所以它本身不受支持.
你可以做的是从系统目录视图迭代表的列,动态创建这样的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
Run Code Online (Sandbox Code Playgroud)
YourTableNameHere
用你的实际表名替换- 你应该好好去!首先在您的实时数据副本上进行测试!