2011-03-30 67 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) />