如何在 ColdFusion 中将查询列转换为列表
Posted
技术标签:
【中文标题】如何在 ColdFusion 中将查询列转换为列表【英文标题】:How to convert Query column to a list in ColdFusion 【发布时间】:2011-07-26 06:34:27 【问题描述】:我正在尝试将 ColdFusion 查询列转换为列表,最好的方法是什么?
我认为有一个内置函数可以让人们轻松地将查询的列转换为列表,如果有的话?
【问题讨论】:
埃里克,你的问题有点老了,所以你已经明白了,但为了后代:ArrayToList(QueryName["ColumnName"], ",")
【参考方案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:很公平,但提问者确实要求提供一份清单。 如果发帖人问“用什么剪刀剪树最好?”你不会觉得有必要推荐电锯吗?只是说;)以上是关于如何在 ColdFusion 中将查询列转换为列表的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark SQL 中将 long 类型的列转换为 calendarinterval 类型