有没有比coldfusion中的qoq更快捷的方法

有没有比coldfusion中的qoq更快捷的方法,coldfusion,Coldfusion,我经常需要在代码中的查询中在代码和名称之间切换。下面是它的样子: <cfquery name="AllLocations" > Select Name, Code From Locations </cfquery> 在本页稍后部分,我需要姓名和代码,或者visa国际组织也需要: <cfquery name="ThisLocation" dbtype="query > Select Name From Locations where Code

我经常需要在代码中的查询中在代码和名称之间切换。下面是它的样子:

<cfquery name="AllLocations" >
    Select Name, Code From Locations 
</cfquery>
在本页稍后部分,我需要姓名和代码,或者visa国际组织也需要:

<cfquery name="ThisLocation" dbtype="query >
    Select Name From Locations where Code = '#Code#'
</cfquery>

<cfoutput>#ThisLocation.Name#</cfoutput>

有没有一个更短的方法来做到这一点,这样我就不必每次都做qoq了

您可以这样做:

<cfoutput>
#allLocations.name[listfind(valuelist(allLocations.code), code)]#
</cfoutput>
编辑从这里开始 鉴于对性能的评论,我知道数组比列表快

<cfoutput>
#allLocations.name[arrayFind(allLocations['code'], code)]#
</cfoutput>

如果不知道何时以及为什么要进行q/q运算,以及是否真的需要从整个表开始,很难说。我想我要问的是,coldfusion是否有一个可以立即获取行和列的速记。类似于AllLocations[Name].Code,当然,但您正在尝试做什么——更重要的是为什么要做什么——会影响哪些选项可用,以及哪些选项更适合您的特定场景。我建议使用UDFYou,因为您错过了listFindI的第二个参数,所以经常这样做。通常我会注意到,因为我实际上试图运行代码,但失败了。这就是我一直在寻找的。我不确定它是否更容易阅读,但它确实有效。@PatrickSchomburg如果这对您很重要,您可能需要执行一些计时测试,看看哪一个实际执行得更好。此代码或QoQ。当我返回具有两个唯一标识符ID、缩写和/或代码的类似数据时,我使用QueryToStructureofStructures UDF tro允许查找和访问其他列数据