ColdFusion 查询输出?

ColdFusion query output?

所以我必须根据其他一些列值输出查询列值。为此,我使用 cfloop 检查查询列中的每个值,然后设置这些值。我的代码如下所示:

<cfloop query="myQuery">
    <cfif status EQ "ABC" OR status EQ "DEF">
        <cfif trim(exitStatus) EQ ''>
            <cfset col8val = #col8val#>
        <cfelse>
            <cfset col8val = #col8val# A>
        </cfif>
    </cfif>
</cfloop>

所以我想知道我应该使用什么来将我的结果存储在一个地方,这样我就不必循环,我想要简单的只是在上面的这个 cfloop 之后转储我的结果集。我不能使用数组或结构,因为两者都需要额外的循环才能获得结果。我也尝试在 SQL 中执行此操作,但我无法合并来自两个不同列的两个 CASE 语句。如果有人可以帮助解决这个问题,请告诉我。

您可以从两个不同的列做一个 case 语句,但也许您只是不知道如何做。我会进一步研究您使用的 SQL 的任何风格,看看它是如何完成的。在 SQL 服务器中你可以这样做:

SELECT CASE WHEN status IN ('ABC', 'DEF') AND COALESCE(exitStatus,'') = ''THEN col8val 
            ELSE col8val + 'A' 
       END AS TheNewValue
FROM   TableName
WHERE  ....

另一种选择是对查询对象进行物理编辑,Ben post 解释了如何做到这一点:Ask Ben: Updating Columns In An Existing ColdFusion Query Object

不过您的确切问题是:

So I'm wondering what I should use to store my results in one place that way I do not have to loop, I want simple just to dump my result set after this cfloop above. I can not use array or structure because both will require additional looping to get results.

我不太明白你的问题。您想要 "store your results in one place" 但不想使用数组或结构。好吧,如果您不能使用数组或结构,您认为您究竟如何存储非原始数据?也不清楚您打算如何使用这些数据。其他人编写的一些函数可以非常有效地将查询转换为数组或结构或列表等。但是如果您需要检查和更改任何数据,您唯一的选择是编写一个循环,使用某人的函数并修改它以执行更改数据或更改 SQL 所需的检查。您可能可以通过 QoQ 发挥创意,但老实说,如果您正在研究它,您不妨在原始查询中进行。