【问题标题】:SQL: Renaming All Variables at OnceSQL:一次重命名所有变量
【发布时间】:2022-01-15 08:42:16
【问题描述】:

我正在使用 Netezza SQL。我的数据如下所示:

        var1      var2     var3
1  0.8879615  9.145530  9.76198
2  8.3522106  8.921711  5.55693
3 16.1873228  6.099095 29.92102
4  5.1786637 15.209045  6.06162
5  3.8149316 15.078099 18.95941
6 -5.8267485  9.371876 23.20190

问题:我想重命名此表中的所有变量,方法是在名称末尾添加“_a”,使其看起来像这样:

      var1_a    var2_a   var3_a
1  0.8879615  9.145530  9.76198
2  8.3522106  8.921711  5.55693
3 16.1873228  6.099095 29.92102
4  5.1786637 15.209045  6.06162
5  3.8149316 15.078099 18.95941
6 -5.8267485  9.371876 23.20190

通常,这可以通过单独重命名每个变量来完成。例如:

Create table new_table as select var1 as var1_a, var2 as var2_a, var3 as var3_a from original_table;

我的问题:假设我的表有 100 个变量 - 我不想手动重命名所有这些变量。 有没有办法一次重命名所有这些变量?

谢谢!

【问题讨论】:

  • 您可能需要动态 SQL。
  • @Tim Biegeleisen:谢谢你的回复!这是我第一次听说“动态sql”——这很难做到吗?谢谢!
  • 我的意思是说你需要编写某种 SQL 脚本来获取所有列名,然后构建一个重命名列的查询。
  • @Tim Biegeleisen:谢谢你的回复!我现在就开始研究这个。

标签: sql rename netezza


【解决方案1】:

您可以一次性动态准备重命名命令并一次性执行:

select 'ALTER TABLE ' || table_name ||' RENAME COLUMN ' || column_name ||' TO ' || column_name|| '_a;'  
from _V_SYS_COLUMNS
where table_name = 'yopurtablename'
and table_schema = 'yourtableschemaname'

【讨论】:

  • 一段不错的动态 SQL :)
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 2021-12-11
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
相关资源
最近更新 更多