Enable Null为True时ColdFusion 2018查询的问题

问题描述

当我返回查询结果时,我遇到了Coldfusion 2018的问题,它显示如下

enter image description here

问题是出现在方括号中的null,这很奇怪,以前的Coldfusion版本从未像这样显示过,当值为null时,它实际上引发了null指针异常问题

任何想法,我该如何解决

解决方法

问题出在您的主要问题中。

在Coldfusion 2018中具有Coldfusion查询的问题 启用了等于true的null

TLDR::您需要更新代码以检查和说明null,或者应该关闭该设置,直到可以正确处理它们为止。

详细信息:

https://coldfusion.adobe.com/2018/07/null-support-in-coldfusion-2018/

Null是现代编程语言中的重要构造, 改进了与其他技术堆栈的语言互操作性,并且 编程语言。

在2018版ColdFusion之前,数据库为null或null 外部服务返回的值已转换为空 串。因此,如果您要为null编码或做出决定 基于ColdFusion应用程序中的空值,没有 实现此目标的固有方式。

想象一下您想将空字符串作为列的情况 数据库表中的值。由于null也将转换为空 字符串,无法区分空字符串和空字符串。 此行为还影响了json序列化和反序列化。

鉴于实际需要基于null的实现,我们决定 在ColdFusion(2018)中将null作为语言更改的一部分 释放)。

现在,在ColdFusion应用程序中,您可以将null分配给 变量,如下所示:

<cfset price = null>

您还可以使用isNull函数检查值是否为空。

<cfdump var=”# isNull(price)#”> //prints yes

<cfif price == null> // resolves to true

<cfif price eq null> // resolves to true

您可以在CF Admin中为服务器上的所有应用程序打开此设置,也可以在应用程序级别将其打开,以便仅特定的应用程序使用该设置。

启用此选项后,当数据库列的值为[null]或空字符串时,查询将返回[empty string]而不是null

https://helpx.adobe.com/coldfusion/developing-applications/the-cfml-programming-language/using-coldfusion-variables/data-types-developing-guide.html

<cfscript>
    myquery=querynew("id,name","integer,varchar",[[null,"hello"],[1,"null"],[null,"null"]]);
    writedump(myquery);
    writedump(format="text",var=#myquery#);
</cfscript>
  • 记录1和3的ID为null
  • 记录2和3的名称具有字符串"null"

Example of nulls in CF 2018