我使用SQL Server 2008和Navicat。我需要使用SQL重命名表中的列。
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
这个说法不成立。
我使用SQL Server 2008和Navicat。我需要使用SQL重命名表中的列。
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
这个说法不成立。
当前回答
@Taher的改进版本
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
IF EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
其他回答
Sql Server管理工作室有一些系统定义的存储过程(SP) 其中一个用于重命名列。SP为sp_rename
语法:sp_rename '[table_name]。old_column_name”、“new_column_name” 如需进一步帮助,请参阅本文:sp_rename by Microsoft Docs
注意:在执行此SP时,sql server会给你一个警告消息,如“警告:更改对象名称的任何部分都可能破坏脚本和存储过程”。只有当您编写了自己的sp,其中涉及您要更改的表中的列时,这才至关重要。
使用sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
参见:SQL SERVER -如何重命名列名或表名
文档:sp_rename (Transact-SQL)
对于您的情况,它将是:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
记住使用单引号将值括起来。
Try:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
可以使用sp_rename重命名列。
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
第一个参数是要修改的对象,第二个参数是将赋予对象的新名称,第三个参数COLUMN通知服务器,重命名是针对列的,也可以用于重命名表、索引和别名数据类型。
或者你可以在SQL Management Studio中慢点两次列并通过UI重命名它…