如何比较查询结果中的字符串?

时间:2014-09-04 00:09:16

标签: coldfusion

我想获得列对字符串的记录总数。

例如,seller列=' ONA'。我想知道有多少记录等于" ONA"还有多少不是。

这就是我所拥有的:

<cfset stringONA= "ONA">
<CFSET onaseller= 0>
<CFSET notseller=0>

<cfloop query="getunion_again">
  <cfif #getunion_again.seller# eq stringONA>
    <cfset onaseller = onaseller +1 >
    <P>TEST</P>
  <cfelse>
    <cfset notseller = notseller +1>
  </cfif>
</cfloop>
<cfdump var=#onaseller #>
<cfdump var=#notseller #>

我没有收到任何错误,只是没有得到任何数据。

2 个答案:

答案 0 :(得分:5)

查询查询是否更容易获取符合条件的记录数而不进行循环?

<cfquery name="qryCount" dbtype="query">
SELECT COUNT(*) AS positive_count
FROM getunion_again
WHERE seller = <cfqueryparam cfsqltype="cf_sql_varchar" value="#stringONA#">
</cfquery>

<cfset onaseller = qryCount.positive_count>
<cfset notseller = getunion_again.recordcount - onaseller>

答案 1 :(得分:3)

可以使用listValueCountNoCase()来计算列表中的匹配项,并且可以使用valueList()将查询列提取为列表。不匹配的数量是行数减去匹配数量。

所以:

values = valueList(getunion_again.seller);
onaseller = listValueCountNoCase(values, stringONA);
notseller = getunion_again.recordCount - onaseller;