gpt4 book ai didi

sql - 如何在查询的 Coldfusion 查询中测试 null/空字符串?

转载 作者:行者123 更新时间:2023-12-04 19:12:25 25 4
gpt4 key购买 nike

我一直在网上寻找解决方案,但没有找到。我在 coldfusion 查询中有一列“date_hired”。如果我对查询进行 cfdump,如果它是日期,它会显示为日期;如果不是,它会显示为 [空字符串]。查询中有8条记录;有些有 date_hired 的日期,有些则没有。如果我尝试在此结果集上执行 q of q:

SELECT date_hired
FROM myQuery
WHERE date_hired = ''

我收到一条错误消息:执行 = 时出现比较异常。不支持的类型比较异常:= 运算符不支持以下类型之间的比较:左侧表达式类型 = "NULL"。右侧表达式类型 = "STRING"。

好的,所以我将查询更改为:

SELECT date_hired
FROM myQuery
WHERE date_hired IS NOT NULL

但它会返回所有 8 行,甚至是 cfdump 中 date_hired 为 [空字符串] 的行。同样,如果我将 where 子句更改为“where date_hired IS NULL”,我将返回 0 行,甚至 [empty string] 行也没有。

我很迷茫。 ISNULL() 和 LEN() 不能用于 q of q's。幸运的是,如果我对查询执行 cfloop 并输出 isDate(date_hired),它会在应该返回 true 的地方返回 false。所以我可以 cfloop 查询并动态构建另一个查询,但这似乎是一种迂回的方式来做一些不应该很难的事情。我可以在 where 子句中使用一些条件吗?谢谢 - CM

最佳答案

感谢 Alex 的回复 - 我终于弄明白了。在这种情况下,我的查询是通过 cfquery 提取的,然后我稍后使用 queryAddColumn() 向其中添加一些列。其中一列是 date_hired。如果我尝试走 cfloop 路线,无论我将该列的值设置为什么(日期或字符串),CF 都会将其保留为 NULL 类型(并且不适用于 IS NULL/IS NOT NULL)。因此,经过进一步研究,我尝试在我的 where 子句中使用 Cast() 函数:

<cfquery name="numberHired" dbtype="query">
select count(*)
from myQuery
where CAST(date_hired AS varchar) <> ''
</cfquery>

它就像一个魅力。

关于sql - 如何在查询的 Coldfusion 查询中测试 null/空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328992/

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