【问题标题】:Replace a specific character in column names替换列名中的特定字符
【发布时间】:2015-06-12 09:32:41
【问题描述】:

我有两个字段:

-name
-address

如何更改特定字母?例如:'a' 更改为 'o',因此字段名称变为:

-nome
-oddress

我试过this,但它不起作用。任何帮助表示赞赏。

【问题讨论】:

  • 您实际上是在重命名列,还是更新列中的数据?
  • 重命名列而不是整个,只是一个特定的字母
  • 您不能发出更改列名的一个字母的命令(为什么要这样做?),您必须重命名该列 - 请参阅@kevinsky 的答案以了解如何操作。
  • @TonyAndrews 感谢您的回复,我从大学得到这个问题 :) 我认为他对这个问题的看法是错误的
  • 他更有可能是想让您更改列中的值 - 例如使用translate 函数

标签: sql oracle replace


【解决方案1】:

此脚本将属于所有者SCOTT 的所有表的所有列名中的所有A 替换为O

DECLARE
  CURSOR alters IS
  SELECT 'ALTER TABLE ' || owner || '.' || table_name || ' RENAME COLUMN ' || 
          column_name ||' TO ' || REPLACE (column_name, 'A', 'O') AS statement
    FROM dba_tab_columns
   WHERE owner = 'SCOTT'
     AND column_name LIKE '%A%';
BEGIN
  FOR rec IN alters LOOP
    EXECUTE IMMEDIATE rec.statement;
  END LOOP;
END;

您需要SELECT 对表 dba_tab_columns 的权限。请注意,它区分大小写。

玩得开心;)

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    ALTER TABLE table_name
      RENAME COLUMN old_name to new_name;
    

    【讨论】:

    • 重命名列而不是整个,只是一个特定的字母
    【解决方案3】:

    我有同样的需要,我必须在一千多个字段中将“”替换为“”。我使用 Excel 进行了连接,以便获得一千个不同的请求,例如: alter table a 将列“a134 60 000”重命名为“a134_____60_000”; 不是很性感...但在几分钟内就解决了!

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      相关资源
      最近更新 更多