我希望将空结果集的总计设置为0。我尝试了以下方法:
SELECT SUM(COALESCE(capacity, 0))
FROM objects
WHERE null IS NOT NULL;
结果:
sum
-----
(1 row)
子问题:上面的工作在Oracle中行不通SUM(NVL(capacity, 0))
吗?
在有关聚合函数的文档页面中:
应该注意的是,除了
count
这些函数, 当没有选择任何行时 ,这些函数将 返回空值
。特别是,sum
没有行返回空值,而不是预期的零值。coalesce
必要时,该函数可用于将零替换为null。
所以,如果你想保证返回的值,适用COALESCE
于 结果 的SUM
,而不是它的参数:
SELECT COALESCE(SUM(capacity), 0) 鈥�
至于Oracle的“子问题”,我在官方文档页面(尤其是10.2的页面)上找不到任何NULL的概念,但是另外两个明确的来源:
SUM([DISTINCT] n)
n的值之和, 忽略NULL
“ fa sum()在某些数字上创建, 忽略空值 ,如以下示例所示”。
也就是说,您无需将NVL应用于capacity
。(但是,就像COALESCE
在PostgreSQL中一样,您可能希望将其应用于SUM
。)
问题内容: 我正在使用JDBC来实现非常简单的数据库连接。 我已经创建了连接/语句并执行了查询。我在调试器中检查语句的查询对象,以确认它正在发送正确的查询。然后,我再次检查了数据库中的查询(直接从调试器复制),以确保其返回数据。但是,返回的结果集在.next()上给出false 这里有我遗漏的常见陷阱吗? 还有myDB类(一个简单的包装程序,使我可以将连接/语句代码放入任何项目中) 编辑:根据建议
主要内容:ResultSet类型,ResultSet的并发性,浏览结果集,查看结果集,更新结果集SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 语句用于从数据库中选择行并在结果集中查看它们的标准方法。 接口表示数据库查询的结果集。 对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在对象中的行和列数据。 接口的方法可以分为三类: 浏览方法:用于移动光标。 获取方法:用于查看光标指向的当前行的列中的数据。 更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数
我有这样的代码 我试图与kategorikode_kategori,但出现错误,请帮助我
我正在使用JOOQ和Postgres。在博士后中,我有一个专栏性别: (表本身是一个视图,性别列是用Java计算的值的占位符) 在Java中,当I.fetch()视图时,我会对每条记录进行一些计算: 所有看起来都很好,如果打印值,它们都是正确的。但是,当我在我的技能记录上调用intoResultSet()时,性别列在所有值旁边都有一个星号,例如“*男性”。 然后,我使用结果集作为OpenCSV C
问题内容: 我正在尝试创建一种方法,从中可以查询数据库并检索整个表。 目前,如果我使用这些数据只是正常工作 中 的方法。但是,我希望该方法返回结果。 我正在了解当前代码。 我该如何实现? 问题答案: 您永远不要通过公共方法来回避。这很容易导致资源泄漏,因为您不得不保持语句和连接打开。关闭它们将隐式关闭结果集。但是,将它们保持打开状态将导致它们悬而未决,并且当它们打开过多时,将导致数据库用尽资源。
问题内容: 将结果集放入会话中有什么缺点?如果不是这样,那是最好的方法。我尝试将其放在中,这不会影响性能吗? 问题答案: A 代表与数据库的开放连接;通常,您希望获取数据并尽快将连接返回到池中。在会话中存储a 可能会导致长时间不关闭连接,这可能会耗尽池或不必要地占用数据库资源。