【问题标题】:How to convert Query column to a list in ColdFusion如何在 ColdFusion 中将查询列转换为列表
【发布时间】:2011-07-26 06:34:27
【问题描述】:

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

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

【问题讨论】:

  • 埃里克,你的问题有点老了,所以你已经明白了,但为了后代:ArrayToList(QueryName["ColumnName"], ",")

标签: coldfusion cfquery


【解决方案1】:

在这种情况下怎么样:

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

对比

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

【讨论】:

    【解决方案2】:

    有一个内置函数可以做到这一点:ValueList

    <cfset myList = ValueList(query.columnname)>
    

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

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

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

    <cfset myList = QuotedValueList(query.columnname)>
    

    【讨论】:

    • 为什么不直接使用内置函数query.ColumnList
    • @MatthewFriedman:query.ColumnList 为您提供列列表。 ValueList() 为您提供特定列的每一行中的值列表。两个截然不同的用例。
    【解决方案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 查询对象实际上是一个关联的列数组……很奇怪但偶尔有用。

    【讨论】:

    • 虽然这个已经关闭了,不知道为什么,我觉得不得不把这个答案,ArrayToList(QueryName["ColumnName"], ",")。
    • 你们到底为什么要提供这些复杂的解决方案? ValueList() 有什么问题?
    • 将列视为数组不需要转换,并且对于大型记录集更快。 ValueList() 需要一些非零的时间来转换,而你从中得到的是一个字符串。现在使用字符串列表需要更多时间。为什么要将某些东西从数组转换为列表,然后再转换回某种可迭代的构造,只是为了再次使用它?
    • @bpannulla:很公平,但提问者确实要求提供一份清单。
    • 如果发帖人问“用什么剪刀剪树最好?”你不会觉得有必要推荐电锯吗?只是说;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2015-08-16
    • 2022-09-30
    • 2011-01-21
    • 1970-01-01
    • 2021-11-09
    • 2021-11-08
    相关资源
    最近更新 更多