在查询的ColdFusion查询中使用count()函数

时间:2011-08-16 09:14:33

标签: coldfusion qoq

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

这是我的代码和测试:

<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>

我应该使用转换功能吗?如果total是[enpty string],那么结果应为0。 或者还有其他最佳/正确的方法吗?

3 个答案:

答案 0 :(得分:10)

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

<cfoutput>Test1: #val(y.total)#</cfoutput> 
<cfoutput>Test2: #val(y.total)#</cfoutput>
如果向其传递空字符串,

val()将返回0。

答案 1 :(得分:2)

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

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

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

但是,如果你的QoQ中有一个WHERE过滤器,那么这显然不会太多。在这种情况下,你需要做一些你建议的事情。我在这里看不到更好的方法。

如果您向Adobe提出该错误,请告诉我们错误参考,以便我们投票支持; - )

- 亚当

答案 2 :(得分:-1)

如果您只想使用de query-object中的行数:#x.recordcount#