我使用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;
这个说法不成立。
当前回答
可以使用sp_rename重命名列。
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
第一个参数是要修改的对象,第二个参数是将赋予对象的新名称,第三个参数COLUMN通知服务器,重命名是针对列的,也可以用于重命名表、索引和别名数据类型。
其他回答
或者你可以在SQL Management Studio中慢点两次列并通过UI重命名它…
@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
因为我经常来这里,然后想知道如何使用括号,这个答案可能对像我这样的人有用。
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
OldColumnName不能在[]中。这是行不通的。 不要在[]中输入NewColumnName,它会生成[[NewColumnName]]。
除了SQL之外,您还可以在Microsoft SQL Server Management Studio中执行此操作。下面是一些使用GUI的快速方法:
第一个方法
缓慢双击列。列名将成为一个可编辑的文本框。
第二种方式
右键单击列并从上下文菜单中选择“重命名”。
例如:
第三条道路
当您需要一次性重命名多个列时,这种方式更可取。
右键单击包含需要重命名的列的表。 点击设计。 在表设计面板中,单击并编辑要更改的列名的文本框。
例如:
注意:我知道OP特别要求SQL解决方案,认为这可能有助于其他人:)
Try:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'