【问题标题】:Renaming the column names in batch using SQL Server 2012使用 SQL Server 2012 批量重命名列名
【发布时间】:2018-01-24 21:49:13
【问题描述】:

我发现这个有用的查询可以重命名我的所有表、索引和约束,但我发现它没有重命名列。

SELECT 'exec sp_rename ' + '''' + NAME + '''' + ', ' + '''' + replace(NAME, 'Tb', 'Tabela') + ''''
FROM sysObjects
WHERE
NAME LIKE 'Tb%'

我知道有 syscolumns,但我不确定在这种情况下如何使用。

问题:我怎样才能获得与此查询相同的结果,但对于列而不是表?

感谢您在这方面的帮助。我正在使用 SQL Server 2012。谢谢。

【问题讨论】:

  • 我的意思是,您只是在选择数据,在这种情况下,它应该为您提供实际运行所需的每个查询。您必须复制结果,将它们粘贴到窗口中,然后运行它
  • 有什么问题?
  • 问题是......我如何得到这个查询的相同结果,但对于列而不是表。
  • 你的意思是这样的:stackoverflow.com/a/174586/5894241

标签: sql-server table-rename


【解决方案1】:

你必须做更多的工作:

SELECT 'exec sp_rename ' + '''' + QUOTENAME(s.name) + '.' + QUOTENAME(o.name) + '.' + QUOTENAME(c.name) + '''' + ', ' + '''' + replace(c.name, 'Col', 'Column') + ''', ''COLUMN'''
FROM sys.columns c
    INNER JOIN sys.objects o ON c.object_id = o.object_id
    INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE c.name LIKE 'Col%'

由于您要重命名列,您必须指定sp_rename 的第三个参数是COLUMN。您还必须以[schema].[table name].[current column name] 的形式构造三部分名称以指向正确的列。

【讨论】:

  • 完美运行!非常感谢你,nejcs!
  • 我很高兴它成功了。请批准此答案并考虑对其进行投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多