启用 Null 为 True 时 ColdFusion 2018 查询的问题

Jan*_*Jan 1 coldfusion null cfml

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

在此处输入图片说明

问题是括号中出现空值,这很奇怪,以前的coldfusion版本从来没有这样显示过,当值为空时,实际上是在抛出空指针异常问题

任何想法,我该如何解决

Adr*_*eno 6

问题在于您的主要问题。

Coldfusion 2018中的coldfusion 查询问题,启用 null 等于 true

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

细节:

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

Null 是现代编程语言中的一个重要结构,它提高了与其他技术堆栈和编程语言的语言互操作性。

在 ColdFusion 2018 年发布之前,从外部服务返回的数据库空值或空值被转换为空字符串。因此,如果您要在 ColdFusion 应用程序中为 null 编码或根据 null 值做出决定,则没有固有的方法来实现这一点。

想象一个场景,您希望将一个空字符串作为数据库表中的列值。由于 null 也被转换为空字符串,因此无法区分 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>
Run Code Online (Sandbox Code Playgroud)
  • 记录 1 和 3 有一个nullID。
  • 记录 2 和 3 具有"null"名称字符串。

CF 2018 中的空值示例