【问题标题】:Deleting entire data from a particular column in oracle-sql从 oracle-sql 中的特定列中删除整个数据
【发布时间】:2015-12-24 05:02:21
【问题描述】:

最近开始学习Oracle-sql。我知道在DELETE 命令的帮助下,我们可以删除特定的行。那么,是否可以仅使用DELETE 命令从表中的特定列中删除整个数据。 (我知道使用UPDATE 命令通过为整列设置空值我们可以实现DELETE 的功能)。

【问题讨论】:

  • UPDATE table SET your_column_name = NULL DELETE 删除行,或者您可以使用ALTER table DROP COLUMN name 删除列(不推荐)
  • @lad2025 谢谢。现在我清楚地了解到 DELETE 只删除行而不是特定列中的整个数据。

标签: sql oracle sql-delete


【解决方案1】:

DELETE

DELETE 语句从指定的数据中删除整行数据 表或视图

如果您想从特定列中“删除”数据,请更新它:

UPDATE table_name
SET your_column_name = NULL;

或者如果列是NOT NULL

UPDATE table_name
SET your_column_name = <value_indicating_removed_data>;

您还可以使用 DDL 删除整列:

ALTER TABLE table_name DROP COLUMN column_name;

【讨论】:

  • 是什么意思?.
  • @RajeeVVenkaT 例如,您的列设置为 NOT NULL 并且您有列名,例如,您可以设置 ` ` 空字符串
  • 我观察到设置 NOT NULL 的列不能用''更新。因此,只有使用 DROP 或 UNUSED 命令我们才能执行操作。
  • 现在我明白了。设置 NOT NULL 时的列不能用 ' ' 更新,但可以用 ' ' 更新。差别不大,但很重要。
  • @RajeeVVenkaT 是的,因为 Oracle 将内部空字符串视为 NULL
【解决方案2】:

使用来自 oracle 12cR2 的 Invisible Type。

ALTER TABLE LOG1
MODIFY operation  INVISIBLE

这比删除特定列要好。如果您需要可见,可以通过更改列名的VISIBLE 来恢复。

【讨论】:

    【解决方案3】:

    在 SQL 中,delete 删除行而不是列。

    您在 Oracle 中有三个选项:

    • 使用更新将所有值设置为NULL
    • 从表格中删除列。
    • 将该列设置为未使用。

    最后两个使用alter table:

    alter table t drop column col;
    alter table t set unused (col);
    

    【讨论】:

      【解决方案4】:

      update employee set commission=nvl2(commission,'','')

      这将删除列中的所有数据

      【讨论】:

        猜你喜欢
        • 2017-12-12
        • 2017-08-17
        • 2022-11-30
        • 2017-09-16
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        • 2020-07-04
        • 2018-04-13
        相关资源
        最近更新 更多