使用SQL Sserver 2008重命名表中的列

时间:2018-11-05 19:00:45

标签: sql-server

我已经阅读了该问题的所有答案,但没有找到(我发现的)答案。

我可以使用列号重命名一列吗?

我有一个表,该表可能已经更改了列名,所以我可能不知道“硬编码”它是什么。我可以按数字引用该列吗?

EXEC sp_rename '[ChkLst].column7', 'NewColName', 'COLUMN'"

谢谢

3 个答案:

答案 0 :(得分:3)

您可以使用表名和列ID从SYS.COLUMNS获取当前列名,然后按如下所示执行SP_RENAME。请注意,不能确保列ID是连续的,并且在尝试重命名列之前,您应该确认该列的ID。

DECLARE @ColumnName VARCHAR(50);

SET @ColumnName = 'YourSchema.YourTable.';

SET @ColumnName = CONCAT(@ColumnName, 
(SELECT name FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(N'YourTable') AND column_id = 7));

EXEC SP_RENAME @ColumnName, 'NewColumnName', 'COLUMN';

答案 1 :(得分:0)

如果知道列号(常规位置),则可以通过运行以下查询来获取列名:

SELECT COLUMN_NAME FROM Information_Schema.Columns
WHERE TABLE_NAME = '<TableName>' AND ORDINAL_POSITION = <ColumnNumber>

,您可以通过以下查询使用列名:

DECLARE @ColName nvarchar(100)

SELECT @ColName = COLUMN_NAME FROM Information_Schema.Columns
WHERE TABLE_NAME = 'TableName' AND ORDINAL_POSITION = 2

SET @ColName = 'TableName.[' + @ColName + ']'

sp_RENAME @ColName , '[NewColumnName]', 'COLUMN'

答案 2 :(得分:0)

你可以喜欢

<form action="validation.html">
      <div class="email">
        <input type="email" placeholder="Email" required>
      </div>
      <button type="submit"  class="subscription-button">Keep Me Posted!</button>
    </form>