如何在 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 中将查询列转换为列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 查询中将行转换为固定列

div元素到coldfusion变量

如何在presto中将列转换为数组

在 Spark SQL 中将 long 类型的列转换为 calendarinterval 类型

如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?

如何在配置单元中将字符串数据类型列转换为日期格式