【问题标题】:Updating blank values with nulls in all the columns in a table在表中的所有列中使用空值更新空白值
【发布时间】:2021-07-11 09:44:25
【问题描述】:

我有一张有 50 列的表格。该表在所有列中都包含空值,但随机。我想用“无数据”更新所有空值。如果两列中有空值,我可以这样做

update tableName 
set col1 = 'nodata' 
where col1 is null

但是,我有 50 列这样的列,而不是为所有列编写 update 命令,有没有其他技术可以在单行查询中完成它。

【问题讨论】:

  • 我会保留空值。他们确实有目的。
  • 我想用“无数据”更新所有空值。不要更改原始源数据,替换为检索查询。
  • 考虑你做max(col1)并得到nodata作为结果......非常混乱。
  • 在一般情况下听起来不可能,因为你不能用'nodata' 更新date '2021-04-21'。这是一项显示任务,应提交给应用程序端。
  • 另外请只留下你的DBMS的一个标签:Oracle大约是Oracle Database,MySQL大约是MySQL database。单击标记后,它会在页面标题处进行描述。不要把它们混在一起,它们是不同的

标签: mysql sql database oracle


【解决方案1】:

你可以使用coalesce():

update tableName
    set col1 = coalesce(col1, 'nodata'),
        col2 = coalesce(col2, 'nodata'),
        . . .;

如果大多数行的所有列都有数据,则可以添加where 子句:

where col1 is not null or col2 is not null or . . . 

注意:这回答了您的问题,但我认为这不是一个好主意。 NULL 是在 SQL 数据库中表示“无数据”的绝佳方式。无需更新值。此外,这假定所有列都是字符串。此方法不适用于其他数据类型——您可能会遇到类型转换错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2021-11-15
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多