在sql server中重命名列时出现问题

wlsrxk51  于 2021-07-26  发布在  Java
关注(0)|答案(4)|浏览(399)

所以我试着将表中的一列重命名为 Conversion_Fee_PerShare 为了公正 Conversion Fee .
我在网上查了一下,发现语法是:

sp_RENAME 'TableName.[OldColumnName]', '[NewColumnName]', 'COLUMN'

我把我的问题写为:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee_Per_Share]' , '[Conversion_Fee]', 'COLUMN'

列名现在变为 [Conversion_Fee] 而不是 Conversion_Fee 现在,如果我再次尝试这样重命名:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee]' , 'Conversion_Fee', 'COLUMN'

它给我一个错误说:
msg 15248,level 11,state 1,procedure sp\u rename,第213行参数@objname不明确或声明的@objtype(列)错误。
我试图更改表drop column allocationdetails。[conversion\u fee]也没有这样做。
正确的语法是什么?

y53ybaqx

y53ybaqx1#

/*Initial Table*/  
CREATE TABLE AllocationDetails
  (
     Conversion_Fee_Per_Share FLOAT
  )

/*Faulty Rename*/  
EXEC sp_rename
  'dbo.AllocationDetails.[Conversion_Fee_Per_Share]',
  '[Conversion_Fee]',
  'COLUMN'

/*Fixed Rename*/  
EXEC sp_rename
  'dbo.AllocationDetails.[[Conversion_Fee]]]',
  'Conversion_Fee',
  'COLUMN'

DROP TABLE AllocationDetails

要在第二列中使用的列名 sp_rename 你回的电话是什么 SELECT QUOTENAME('[Conversion_Fee_Per_Share]') .
或者更直接地使用

EXEC sp_rename
  'dbo.AllocationDetails."[Conversion_Fee]"',
  'Conversion_Fee',
  'COLUMN'
``` `QUOTED_IDENTIFIER` 对于该存储过程始终设置为“开”,因此这不依赖于您在会话设置中启用它。
9vw9lbht

9vw9lbht2#

别管我发现了:

ALTER TABLE dbo.AllocationDetails
DROP COLUMN [[Conversion_Fee]]]

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN'

这些很好用。:)
使用双引号:

exec sp_rename 'dbo.AllocationDetails."[Conversion_Fee]"' , 'Conversion_Fee', 'COLUMN'

也可以。

mpbci0fu

mpbci0fu3#

要解决此问题:

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN'
wbrvyc0a

wbrvyc0a4#

同时运行以下查询。

USE [DATABASE_NAME];

GO
EXEC sp_rename '[SCHEMA_NAME].[TABLE_NAME].OLD_COLUMN_NAME', 'NEW_COLUMN_NAME', 'COLUMN';
GO

它会解决你的问题

相关问题