6

我想count()在 ColdFusion 查询对象中使用函数。

这是我的代码和测试:

<cfset x = querynew("id,name")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test1: #y.total#</cfoutput>

<cfset temp = QueryAddRow(x)>
<cfset Temp = QuerySetCell(x, "id", 1)>
<cfset Temp = QuerySetCell(x, "Name", "Vikas")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test2: #y.total#</cfoutput>

我应该使用转换功能吗?就像如果总计是 [enpty string] 那么结果应该是 0。或者有没有其他最好/正确的方法来做到这一点?

4

3 回答 3

10

看起来这确实是一个错误,但是有一个简单的方法可以解决它。只需将 y.total 包装在 val() 中,它就会显示为:

<cfoutput>Test1: #val(y.total)#</cfoutput> 
<cfoutput>Test2: #val(y.total)#</cfoutput>

如果传递一个空字符串,val() 将返回 0。

于 2011-08-16T12:23:43.443 回答
2

我认为您在这里发现了 CF 中的错误(也许记录它 @ http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html)。

第一个查询应该返回 0,而不是 [nothing]!

在您的简单示例中,我认为完全不用 QoQ,而只需使用 x.recordCount。

但显然,如果您的 QoQ 中有 WHERE 过滤器,那么这并不算多,在这种情况下,您将需要执行您建议的操作。我在这里看不到更好的方法。

如果您向 Adob​​e 提出该错误,请让我们知道错误参考,以便我们为它投票;-)

- 亚当

于 2011-08-16T11:01:52.113 回答
-1

如果您只想要查询对象中的行数,请使用:#x.recordcount#

于 2011-08-17T13:24:52.763 回答