Ser*_*zin 617 sql sql-server alter-table sql-server-2008
我正在使用SQL Server 2008和Navicat.我需要使用SQL重命名表中的列.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Run Code Online (Sandbox Code Playgroud)
此声明不起作用.
Hab*_*bib 1127
使用 sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Run Code Online (Sandbox Code Playgroud)
对于你的情况,它将是:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Run Code Online (Sandbox Code Playgroud)
请记住使用单引号括起您的值.
Car*_*all 100
或者SQL
,您可以在Microsoft SQL Server Management Studio中执行此操作.以下是使用GUI的一些快速方法:
慢慢双击该列.列名称将成为可编辑的文本框.
右键单击列,然后从上下文菜单中选择"重命名".
例如:
当您需要一次重命名多个列时,这种方式更为可取.
例如:
注意:我知道OP专门要求SQL解决方案,认为这可能有助于其他人:)
Tec*_*hDo 57
尝试:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
Run Code Online (Sandbox Code Playgroud)
小智 25
您还应该指定表的架构,否则可能会收到此错误:
消息15248,级别11,状态1,过程sp_rename,行238参数@objname不明确或声明的@objtype(COLUMN)错误.
如果是部署脚本,我还建议为其添加一些额外的安全性.
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';
Run Code Online (Sandbox Code Playgroud)
Ale*_*hen 16
您可以使用sp_rename
重命名列.
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)
第一个参数是要修改的对象,第二个参数是将赋予对象的新名称,第三个参数COLUMN通知服务器重命名用于column
,也可以用于重命名tables
,index
和alias data type
.
Hon*_*zaB 12
由于我经常来这里然后想知道如何使用括号,这个答案可能对像我这样的人有用.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
Run Code Online (Sandbox Code Playgroud)
OldColumnName
不能在[]
.不起作用.NewColumnName
进入[]
,它会导致成[[NewColumnName]]
.@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
Run Code Online (Sandbox Code Playgroud)