当前位置: 首页 > 面试题库 >

重命名所有表中的列-SQL

辛建业
2023-03-14
问题内容

我需要重命名数据库中所有表中的列。因此必须在所有表中将“ OldColumn”列重命名为“ NewColumn”

我可以使用此查询获取具有此列的表的列表:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME= <Column Name>

但是,如何在所有表中重命名它却尽可能简单,而不必编写游标呢?


问题答案:

当然,您不需要为此使用光标。您可以使用sys.columns和sys.objects生成动态sql。然后简单地执行它。一旦您对动态sql感到满意,就可以随意取消最后一行的注释。

-—警告!!!! ----如果更改列名,则视图,存储过程,函数等都将被破坏。

declare @CurrentColumnName sysname = 'asdf'
    , @NewColumnName sysname = 'qwer'
    , @SQL nvarchar(MAX) = ''

select @SQL = @SQL + 'EXEC sp_rename ''' + o.name + '.' + c.name + ''', ''' + @NewColumnName + ''', ''COLUMN'';'
from sys.columns c
join sys.objects o on o.object_id = c.object_id
where c.name = @CurrentColumnName

select @SQL

--exec sp_executesql @sql


 类似资料:
  • 问题内容: 这是我正在尝试做的事情-我有一个包含很多列的表,并且想要创建一个视图,其中包含根据其他列中值的特定组合重新分配的一个列 我想要一个将重新分配其中一个字段的查询,例如 但是,我现在拥有的架构是 我可以在选择的陈述中使用“ AS” 但是,我想找到年龄实际上是计算年龄的原始方案 。 我可以选择重命名吗?(然后A_1完全消失)或选择性的*,我可以选择除某些列之外的所有列?(这也将解决上一个语句

  • 我正在尝试用dataframe.from_dict操作命名新dataframe的列。

  • 问题内容: 我需要使用完全相同的列名来连接两个表。在连接步骤之前,我将需要重命名列。 每个表包含100多个列。 我想知道是否有任何方法可以添加前缀或后缀来重命名所有列,而不是使用手动更改它们。我在BigQuery上使用标准SQL。我在下面举例说明。我想知道BigQuery中是否有任何功能,例如: ……例子……在此先谢谢你! 问题答案: *显然,最终 *使用 如下所示, 而不是 最终 使用 结果 :

  • 我想在sqlite中重命名列。我为一些列创建了两个带空格的单词标题,这些标题稍后会产生问题(例如而不是。 以前,这似乎是不可能的链接。但是几个月前的一个版本似乎包含了选项链接。 然而,这似乎不起作用。 查询将生成以下错误消息: 我为列名添加了引号,以防出现空格问题: 但也会出现同样的错误。 此解决方案提示重命名是可能的。但只重命名表(这很好),而不重命名列。

  • 问题内容: 是否有一种快速的方法可以从中的所有表获取所有列名,而不必列出所有表? 问题答案:

  • 问题内容: 我正在尝试使用以下SQL表达式重命名MySQL社区服务器5.5.27中的列: 我也试过 但它说: 错误:检查与您的MySQL服务器版本相对应的手册 问题答案: 使用以下查询: 该功能在Oracle数据库中使用。 注意用于MySQL的反引号,而双引号用于Oracle的语法。 另请注意,MySQL 8.0可能不接受反引号。在这种情况下,不带反引号的情况下执行查询,它可能会起作用。 @ la