【发布时间】:2018-08-03 11:17:15
【问题描述】:
寻求有关此代码的一些帮助。在不发布太大的整个文件的情况下,我只需要一点帮助就可以在 Coldfusion 中使用 Nullif。
我猜想在我的 SQL 语句中使用它,但为了学习,我想知道在设置变量时是否可以使用它:-
代码没有抛出任何错误,但我想知道在 Nullif 之后将 0 放在哪里。
<cfif AE_C NEQ 0>
<cfset AE_P=AE_T/AE_C>
<cfset AE_A=AE/AE_C*100>
<cfset AE_B = AE-AE_C/H8*H9>
<cfset AE_D=AE/H9*H8>
<cfelse>
<cfset AE_P=ISNULL(AE_T/NULLIF(AE_C))>
<cfset AE_A=ISNULL(AE/NULLIF(AE_C*100))>
<cfset AE_B=ISNULL(AE-AE_C/NULLIF(H8*H9))>
<cfset AE_D=ISNULL(AE/NULLIF(H9*H8))>
</cfif>
希望可以这样。
【问题讨论】:
-
如果您将
0设置为null,您将得到一个错误,因为除以0 将是一个错误。 -
如果你能提供你正在寻找的输出的大纲,那就太好了。
-
上面的代码只是一组 20 奇数。当我们将零除以 4 而不抛出异常时,我们需要计算显示 0.00。目前,对于显然被计为 1 的每个值,我都收到了 1 的计算结果。我发现了一段由 Ben Nadel 编写的关于处理 Nullif() 的代码,该代码在 SQL 语句中使用时会正确设置所有值这样您就不会收到错误。我只是不知道如何实现它。我会在下面贴出来。也许这就是答案?
-
0/1是有效的数学。42/null也是如此。当您尝试将底部数字设为 0 (1/0) 时会引发错误。我认为您遇到的问题是隐式类型转换。9/2将返回5,但9.0/2将返回4.5。您必须将每个操作中的第一个数字设为小数,以使其余数字也强制转换为小数。
标签: coldfusion nullif