使用 sp_rename 更改列名时出错。 (创建双冒号)
Posted
技术标签:
【中文标题】使用 sp_rename 更改列名时出错。 (创建双冒号)【英文标题】:Mistake made while changing column name using sp_rename. (double colon created) 【发布时间】:2021-03-13 12:48:27 【问题描述】:我在更改列名时犯了一个错误。我想更改我的 SQL 数据库 (Microsoft SQL Server) 中的列名。我成功了,但我在列名之间加了一个冒号。这就是为什么我现在不能再改名字了。使用方括号并没有解决问题。
它不是“table.column_name”而是“table.table.column_name”。
这也使我无法执行“选择”、“删除”或“更新”语句。这是因为不再找到该列,给我错误
"No item by the name of '[table.new_scheme]' could be found in the current database 'name_database'"
我做了什么:
exec sp_rename 'table.old_column', 'table.new_column'
它应该是什么:
exec sp_rename 'table.old_column', 'new_column'
我阅读并使用了这篇文章(以错误的方式:|)。 How to rename a table in SQL Server?
【问题讨论】:
当您收到此消息时,您能否与我们分享您的尝试:“在当前数据库 'name_database' 中找不到名称为 '[table.new_scheme]' 的项目”?请提供代码,不仅选择更新或删除语句...谢谢! 【参考方案1】:现在您必须这样做,因此您现在将“table.new_column”列放在双引号或方括号中,如下所示:
exec sp_rename 'dbo.tablename."table.new_column"', 'new_column', 'COLUMN';
或
exec sp_rename 'dbo.tablename.[table.new_column]', 'new_column', 'COLUMN';
【讨论】:
【参考方案2】:假设你有一个简单的表:
create table mytable (id int, test int)
而且你更改了第二列的名称:
exec sp_rename 'mytable.test', 'mytable.test2'
您可以通过以下方式重命名它:
exec sp_rename 'mytable."mytable.test2"', 'test2'
这是一个演示:
DEMO
【讨论】:
【参考方案3】:您需要在文字字符串中分隔标识列:
CREATE TABLE dbo.YourTable (YourColumn int);
GO
EXEC sys.sp_rename N'dbo.YourTable.YourColumn',N'YourTable.NewColumn','COLUMN';
GO
SELECT *
FROM dbo.YourTable;
GO
EXEC sp_rename N'dbo.YourTable.[YourTable.NewColumn]', N'NewColumn', 'COLUMN'
GO
SELECT *
FROM dbo.YourTable;
GO
DROP TABLE dbo.YourTable;
【讨论】:
【参考方案4】:您可以使用 SSMS 对象资源管理器执行此操作。截图如下:
【讨论】:
以上是关于使用 sp_rename 更改列名时出错。 (创建双冒号)的主要内容,如果未能解决你的问题,请参考以下文章