我想在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。 或者还有其他最佳/正确的方法吗?
答案 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#