【发布时间】:2018-05-23 14:49:00
【问题描述】:
在 Stack Overflow 上搜索将表中的 NULL 值替换为 0 的方法后,我发现许多线程似乎都指向使用 COALESCE 函数。例如。 postgresql return 0 if returned value is null
我了解 COALESCE 函数会“替换”您特定查询的空值;但是,桌子本身保持不变。也就是说,如果您在没有 COALESCE 的单独查询中再次查询该表,空值仍然存在。
我的问题是,有没有办法让我用指定的值(如 0)永久替换表中的 NULL 值,这样我就不必在每个查询中都进行 COALESCE 了?作为对我的问题的扩展,修改原始表而不是在查询中进行操作是否被认为是不好的做法?
【问题讨论】:
-
您可以在表的该列上添加“非空”约束。这将限制将来插入任何 null
-
哦,我正在将数据从 CSV 复制到我的表中,所以 NOT NULL 对我不起作用(我相信这是因为我在定义表?如果我错了,请纠正我)
-
在这种情况下,COALESCE 是一个不错的选择。否则,您可以在表的插入上添加触发器并从那里替换任何 Null 值,无论插入来自哪个查询
-
是否有很多列具有空值?
-
大约 5 列的 NULL 值分散在其中?我只是认为,如果我最初删除它们以避免在查询中多次 COALESCING 会更干净,但是我是 SQL 的新手,所以不确定最佳实践等。
标签: sql postgresql null