我需要在引号内创建一个国家/地区名称列表,并在末尾创建一个逗号 - 除了最后一个国家/地区名称,如下所示: (我正在使用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"
答案 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 。