提问人:AgnesHira 提问时间:6/15/2023 更新时间:6/15/2023 访问量:69
如何使用 [] 重命名列 SQL Server
How to Rename Column SQL Server with []
问:
我输入了错误的列名并包含 [],如上所示 [avail_memory_mb],我想使用语法删除 [],我该怎么做?
我试过使用语法EXEC sp_RENAME '[db_isdv_itsm].[dbo].[tbl_m_comp_sysboot_time].[avail_memory_mb]', 'avail_memory', 'COLUMN'
但出现错误
Msg 15248, Level 11, State 1, Procedure sp_RENAME, Line 247 Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong.
答:
2赞
Thom A
6/15/2023
#1
在这种情况下,最简单的方法是使用不同的分隔标识符到括号 () 作为列的名称:[]
EXEC sys.sp_rename N'dbo.tbl_m_comp_sysboot_time."[avail_memory_mb]"', N'avail_memory', N'COLUMN';
如果你“必须”使用括号,那么你需要转义右括号():]
EXEC sys.sp_rename N'dbo.tbl_m_comp_sysboot_time.[[avail_memory_mb]]]', N'avail_memory', N'COLUMN';
请注意,在这两个示例中,我还删除了数据库名称。这是因为不支持 4 部分命名。首先连接到数据库,然后使用系统过程。sys.sp_rename
如果你需要知道一个对象的字面量应该是什么,你也可以用它来找出它。例如:QUOTENAME
SELECT QUOTENAME(N'[avail_memory_mb]');
这带来了价值。所以,如果你真的想要,你可以做这样的事情:nvarchar(258)
[[avail_memory_mb]]]
DECLARE @ObjectPath nvarchar(1000) = CONCAT(QUOTENAME(N'dbo'),N'.',QUOTENAME(N'tbl_m_comp_sysboot_time'),'.',QUOTENAME(N'[avail_memory_mb]'));
EXEC sys.sp_rename @ObjectPath, N'avail_memory', N'COLUMN';
评论
[]
[[]]
EXEC sp_RENAME '[db_isdv_itsm].[dbo].[tbl_m_comp_sysboot_time].[[avail_memory_mb]]', 'avail_memory', 'COLUMN'
sp_rename
不允许四部分命名。您需要连接到相关数据库。