重命名列的SQL Server 2008(Rename column SQL Server 2008

2019-09-01 11:40发布

我使用SQL Server 2008和Navicat的。 我需要使用SQL在表中重命名列。

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

这种说法是行不通的。

Answer 1:

使用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'

请记住,使用单引号括住你的价值观。



Answer 2:

或者到SQL ,您可以在Microsoft SQL Server Management Studio中做到这一点。 下面是使用GUI几个简单的方法:

第一种方式

在列慢速双击。 列名会变成可编辑的文本框中。


第二种方式

右键单击列,然后从上下文菜单中选择重命名。

例如:


第三条道路

这种方式是最好的,当你需要一气呵成重命名多个列。

  1. 在包含需要重命名该列的表单击鼠标右键。
  2. 单击设计
  3. 在表的设计面板中,单击并编辑你要改变的列名的文本框中。

例如:

注:我知道OP特别要求将SQL解决方案,认为这可能会帮助别人:)



Answer 3:

尝试:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'


Answer 4:

你还应该指定表的架构或者你可能会得到这样的错误:

消息15248,级别11,状态1,过程sp_rename可以,238线在任何参数@objname不明确或所要求的@objtype(列)是错误的。

如果它是一个部署脚本我还建议增加一些额外的安全吧。

    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')
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';


Answer 5:

这将是使用已经内置函数一个很好的建议,但另一种解决方法是:

  1. 创建具有相同的数据类型和新名称的新列。
  2. 运行一个UPDATE / INSERT语句将所有的数据复制到新列。
  3. 删除旧列。

背后使用的好处sp_rename是,它需要与它相关的所有关系的照顾。

从文档 :

sp_rename自动重命名每当PRIMARY KEY或UNIQUE约束被重命名相关的索引。 如果重命名的索引绑在PRIMARY KEY约束,则PRIMARY KEY约束sp_rename也会自动重命名。 sp_rename可用于重命名初级和次级XML索引。



Answer 6:

您可以使用sp_rename来重命名列。

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

第一个参数是将被修改,第二个参数是将要提供给对象的新名称的对象,而第三参数COLUMN通知该重命名为所述服务器column ,并且也可以用于重命名tablesindexalias data type



Answer 7:

由于我经常来到这里,然后不知道如何使用括号,这个答案可能是那些像我一样有用。

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • OldColumnName不能在[] 不起作用。
  • 不要把NewColumnName[]它会导致成[[NewColumnName]]


Answer 8:

SQL Server Management Studio中有一些系统定义的存储过程(SP)
其中之一是用于重命名一个column.The SP是sp_rename

语法:sp_rename '[表名] .old_column_name', 'new_column_name'
:为了进一步帮助请参阅这篇文章由微软文档sp_rename

注:在此执行SP上的SQL服务器会给你一个警告消息“ 警告:更改对象名可能破坏脚本的任何部分和存储过程 ”。这是关键的前提是你已经编写了自己的SP涉及列在表格中你是即将改变。



Answer 9:

改进@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


Answer 10:

或者你可以只两次在SQL Management Studio中列慢点击,并通过UI重新命名它...



文章来源: Rename column SQL Server 2008