gpt4 book ai didi

mysql - 如何在 COALESCE 调用期间正确解析空值

转载 作者:行者123 更新时间:2023-11-29 20:40:16 25 4
gpt4 key购买 nike

我有一个相当大的 mysql 调用,我不会费心显示所有内容,因为它并不重要。在需要修改之前工作正常的部分如下所示:

COALESCE(d1.apFunReq, d2.apFunReq, d3.apFunReq, d4.apFunReq, d5.apFunReq, d6.apFunReq, d8.apFunReq, d2old.apFunReq, d3old.apFunReq, d5old.apFunReq, '') AS 'Funding Required',

这将返回多个表中的所有 apFunReq 值,无论是 null 还是已填充。工作得很好,没有任何问题。

现在我们决定需要另一个表数据来加入该流程,但是所需的数据并不全部位于这个新表的一列中,而是需要总共添加 5 列。所以我实现了这个:

COALESCE(d1.apFunReq, d2.apFunReq, d3.apFunReq, d4.apFunReq, d5.apFunReq, d6.apFunReq, d8.apFunReq, (IFNULL(d10.reqFunding_01, 0) + IFNULL(d10.reqFunding_02, 0) + IFNULL(d10.reqFunding_03, 0) + IFNULL(d10.reqFunding_04, 0) + IFNULL(d10.reqFunding_05, 0)), d2old.apFunReq, d3old.apFunReq, d5old.apFunReq, '') AS 'Funding Required',

现在,这实际上适用于结果中的新表行,但它破坏了之前返回正常的大部分内容。现在,许多其他表值仅返回 0。

显然,我需要将 d10 内的数据的空值返回 0,以便加法工作,但我希望其他表中的空值保持为空,并且我希望所有表的数据显然都能按预期工作。

我不确定为了得到想要的结果我做错了什么。有人可以帮我解决这个问题吗?

C

最佳答案

解决此问题的简单方法是在将所有 IFNULLed 值相加后使用 NULLIF,如下所示:

 COALESCE(d1.apFunReq, d2.apFunReq, d3.apFunReq, d4.apFunReq, d5.apFunReq, d6.apFunReq, d8.apFunReq, 
NULLIF(IFNULL(d10.reqFunding_01, 0) + IFNULL(d10.reqFunding_02, 0) + IFNULL(d10.reqFunding_03, 0) + IFNULL(d10.reqFunding_04, 0) + IFNULL(d10.reqFunding_05, 0), 0),
d2old.apFunReq, d3old.apFunReq, d5old.apFunReq, '') AS 'Funding Required',

显然,如果 0 是有效答案,则这不起作用。

关于mysql - 如何在 COALESCE 调用期间正确解析空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com