我在我的实例表中具有列deletedTime
。现在,我想检查ColdFusion是否值为无效。查询只有一张记录要打印出来。 IsNull(test)
正在返回正确的值,但是 IsNull(searchForDeletedInstances.deletedTime)
返回 false
,但值在数据表null中。
<cfquery datasource="hostmanager" name="searchForDeletedInstances">
SELECT deletedTime
FROM instances
WHERE instanceId = <cfqueryparam value="#instanceId#"
cfsqltype="CF_SQL_NVARCHAR">
</cfquery>
<cfloop query="searchForDeletedInstances">
<cfset test= #deletedTime#>
</cfloop>
<cfreturn IsNull(test)>
<cfreturn IsNull(searchForDeletedInstances.deletedTime)>
我将在查询中进行测试。
<cfquery datasource="hostmanager" name="searchForDeletedInstances">
SELECT deletedTime
FROM instances
WHERE instanceId = <cfqueryparam value="#instanceId#" cfsqltype="CF_SQL_NVARCHAR">
AND deletedTime IS NULL
</cfquery>
<cfreturn BooleanFormat(searchForDeletedInstances.recordcount)>
ColdFusion 2018确实允许null值,但必须将服务器/站点配置为使用它。这可能会破坏许多较旧的代码。2018年之前的ColdFusion将使用一个空字符串作为空值。
我会更改查询,以便仅查找null删除时间记录。然后使用SearchFordErtedInstances.RECORDCOUNT值确定是否找到了无记录。代码看起来像这样:
<cfquery datasource="hostmanager" name="searchForDeletedInstances">
SELECT deletedTime
FROM instances
WHERE instanceId = <cfqueryparam value="#instanceId#" cfsqltype="CF_SQL_NVARCHAR">
AND deletedTime IS NULL
</cfquery>
<cfset nullRecord = searchForDeletedInstances.recordCount ? true : false>
<cfreturn nullRecord>
null值中的null值以空字符串的形式返回。测试ISDATE((。您始终可以使用CFDUMP显示查询的内容,因此您可以看到返回的数据和数据类型。