在PostgreSQL中将表中的NULL替换为<SOME VALUE>



在搜索在堆栈溢出上将表中的 NULL 值替换为 0 的方法时,似乎我发现的许多线程都指向使用 COALESCE 函数。 例如,如果返回值为空,则 postgresql 返回 0

我知道 COALESCE 函数"替换"了特定查询的空值;但是,表本身保持不变。也就是说,如果您在没有 COALESCE 的单独查询中再次查询该表,则空值仍然存在。

我的问题是,有没有办法将表中的 NULL 值永久替换为指定的值(如 0(,这样我就不必在每个查询中 COALESCE?作为我问题的扩展,修改原始表而不是在查询中进行操作是否被认为是不好的做法?

你可以做一个更新:

UPDATE table SET col1 = 0 WHERE col1 IS NULL;

这应该会有效地更新表上所有匹配的记录

我知道你得到了答案,但你也可以在进一步的查询中使用nvl函数。可以在运行时将 NULL 值替换为 0,以确保查询按预期工作。

SELECT 
id
,nvl(col1, 0)
FROM
...

它不会在表中更新,但您可以确定所有 NULL 值都像您想要的那样显示为 0。也许你忘了更新。

相关内容

最新更新