2011-03-30 66 views
17

我试图将ColdFusion查询列转换为列表,最好的方法是什么?如何将查询列转换为ColdFusion列表

我认为有一个内置的函数,可以轻松地将查询的列转换为列表,如果有的话?

+2

埃里克,你的问题是有点老了,所以你prolly已经想通了,但为后人: ArrayToList(QueryName [“ColumnName”],“,”)' – 2011-04-06 03:37:04

回答

40

有一个内置的功能,要做到这一点:值列表

<cfset myList = ValueList(query.columnname)> 

与所有的列表功能,还有一个可选的分隔符属性。

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

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

<cfset myList = QuotedValueList(query.columnname)> 
3

您也可以访问查询的列作为数组直接,无需任何转换是否适合你想要做什么:

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”],“,”)。 – 2011-04-06 03:34:47

+0

为什么在这个世界上你提供了这些令人费解的解决方案? ValueList()有什么问题? – ale 2011-11-17 16:51:03

+0

将列作为数组处理不需要转换,对于大型记录集来说速度更快。 ValueList()需要一些非零的时间来进行转换,而你从中得到的是一个字符串。现在使用字符串列表需要更多时间。为什么要将数组中的数据转换为列表,然后返回某种可重复使用的构造,以便再次使用它? – bpanulla 2011-11-26 00:48:22

0

怎么样在这样的情况下:

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

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