如何在ColdFusion中将查询列转换为列表

22

我正在尝试将ColdFusion查询列转换为列表,最好的方法是什么?

我认为有一种内置函数可以轻松地将查询的列转换成列表,如果有的话,请问它是什么?


2
Erik,你的问题有点老了,所以你可能已经解决了,但是为了后人:ArrayToList(QueryName["ColumnName"], ",") - Tyler Clendenin
3个回答

54

有一个内置函数可以实现这个功能:ValueList

<cfset myList = ValueList(query.columnname)>

像所有列表函数一样,这里有一个可选的分隔符属性。

<cfset myList = ValueList(query.columnname,"|")>

如果你需要列表中的值用双引号括起来,请使用QuotedValueList。

<cfset myList = QuotedValueList(query.columnname)>

为什么不直接使用内置函数 query.ColumnList? - Matthew Friedman
@MatthewFriedman:query.ColumnList 给出列的列表。ValueList() 给出特定列每行的值的列表。这是两种非常不同的用例。 - ale

4

如果这符合您的需求,您也可以直接将查询的列作为数组访问,无需进行任何转换:

qry.col[1] // col field of first record
qry.col[2] // col field of second record
...

或者

qry["col"][1] // col field of first record
qry["col"][2] // col field of second record

CF查询对象实际上是一组列的关联数组...虽然有点奇怪但偶尔很有用。


3
尽管这个已经关闭了,我不知道为什么,但我感觉有必要放上这个答案:ArrayToList(QueryName["ColumnName"], ",")。 - Tyler Clendenin
1
你为什么要提供这些复杂的解决方案?ValueList()有什么问题吗? - ale
@bpanulla:好的,但是提问者确实要求列出一个清单。 - ale
2
如果发帖者问“砍树最好用什么剪刀?”,你难道不觉得有义务建议使用电锯吗?只是说一下 ;) - bpanulla
问“最好的”任何事情都是一个主观问题,很可能会被关闭,但我理解你的意思。 - ale
显示剩余3条评论

1

像这种情况怎么办:

<cfset SummaryQuery = Evaluate('getReportData' & summaryName & 'Summary') />
<cfset TypeList = ArrayToList(SummaryQuery[subsectionName & 'Type']) />

对比。

<cfset QueryColumn = SummaryQuery[subsectionName & 'Type'] />
<cfset TypeList = ValueList(QueryColumn) />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接