我有一个场景,如果列没有表示空的值,则更新'NULL'字符串。因此,我运行了多个更新查询来设置'NULL'字符串。
update codesets set system_name='NULL' where system_name is null
update codesets set column_name='NULL' where column_name is null
update codesets set table_name='NULL' where table_name is null
update codesets set schema_name='NULL' where schema_name is null
如何将多个更新查询合并为单个更新查询?
2条答案
按热度按时间xtupzzrd1#
您可以使用case表达式、nvl或coalesce:
对于更新的每一行,如果这些列中的每一列不为空,则将其(重新)设置为当前值,如果为空,则设置为“NULL”。
组合的
where
子句意味着仅触及其中至少一列需要更新的行;对于那些行,所有四列都被更新,但可能是它们的原始值。2但是至少有一列会改变。fiddle
我怀疑这是否是一个好主意--使用神奇的值'NULL'而不是真正的null似乎没有帮助。
egdjgwm82#
您可以使用
coalesce
将值设置为“NULL”,但我不认为这样做有什么意义,代码似乎不太可读(在我看来)。下面是一个示例代码:
另外,为什么需要将值设置为“NULL”?