创建逗号分隔的引用值列表

时间:2017-01-20 19:15:19

标签: coldfusion coldfusion-10

我需要在引号内创建一个国家/地区名称列表,并在末尾创建一个逗号 - 除了最后一个国家/地区名称,如下所示: (我正在使用ColdFusion 10)

  "Tuvalu",
  "Uganda",
  "Ukraine",
  "United Arab Emirates",
  "United Kingdom",
  "Uruguay"

  <cfquery name="query_names" datasource="MyDB">
   select short_desc
   from tbl_country
   where NVL(short_desc,' ') <> ' '
   order by short_desc
  </cfquery>
  <cfset TotalRec = "#query_names.Recordcount#">

  <cfloop query="query_names">
     <cfif query_names.Recordcount GT 271>
       <cfoutput>
         "#Trim(short_desc)#" & ","
       </cfoutput>
     <cfelse>
       <cfoutput>
         "#Trim(short_desc)#"
       </cfoutput>
     </cfif>
  </cfloop>

此循环会在引号内生成国家/地区名称,但不会生成逗号。所以我的循环结果是:

  "Tuvalu"
  "Uganda"
  "Ukraine"
  "United Arab Emirates"
  "United Kingdom"
  "Uruguay"

3 个答案:

答案 0 :(得分:6)

如果你真的需要双引号,那么将引用的值附加到数组并将其转换为最后的列表可能更简单。 ArrayToList函数会自动为您处理逗号:

<cfset names = []>
<cfloop query="query_names">
    <cfset arrayAppend(names, '"'& short_desc & '"')>
</cfloop>

<cfoutput>#arrayToList(names)#</cfoutput>

<强>结果:

"Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","Uruguay" 

旁注,如果单引号,即'可以接受,则更简单。跳过循环,只需使用QuotedValueList()

 <cfoutput>#quotedValueList(query_names.short_desc)#</cfoutput>

<强>结果:

'Tuvalu','Uganda','Ukraine','United Arab Emirates','United Kingdom','Uruguay'

答案 1 :(得分:1)

User1557856,你太近了。你的答案实际上是好的,但有一点。如果你纠正它,你会得到你想要的。

您获得没有逗号的列表的原因是:

<cfif query_names.Recordcount GT 271>

这种情况显然总是错误的。因此,只运行代码的<cfelse></cfif>部分。那是没有逗号的部分,因此就是结果。

如果您稍微修改代码,如下所示,您将获得所需的结果:

<cfloop query="query_names">
     <cfif query_names.currentRow LT query_names.Recordcount>
       <cfoutput>
         "#Trim(short_desc)#",
       </cfoutput>
     <cfelse>
       <cfoutput>
         "#Trim(short_desc)#"
       </cfoutput>
     </cfif>
 </cfloop>

答案 2 :(得分:1)

我希望 listQualify()以相当简单的方式做同样的事情。不是吗???

<cfset myQry = queryNew("country","varchar",[["Tuvalu"],["Uganda"],["Ukraine"],["United Arab Emirates"],["United Kingdom"],["Uruguay"]])>
<cfdump var="#listQualify(valueList(myQry.country),'"')#" />

如果我们需要单引号列表,我们也可以使用 quotedValueList()作为 Leigh