我遇到一个问题,我要使用Ben Nadel的QueryAppend.cfc将来自两个不同数据源的两个记录集连接起来。我返回的数据是正确的,但是不希望对数据进行排序。合并结果集的排序方式如下,所有结果均以小写字母开头,并附加到记录集的底部:
我期望(并且需要)以下类型的排序:
苹果
艺术
瓶
男孩
猫
硬币
飞镖
狗
代码如下:
<!---Calling Template--->
<cfquery name="getDataSet1" datasource="datasource1">
SELECT param1
FROM table1
</cfquery>
<cfquery name="getDataset2" datasource="datasource2">
SELECT param1
FROM table2
</cfquery>
<cfscript>
// Create object
TheUnionObject = createObject("component", "cfc/QueryAppend");
// Call the function
myUnionResult = TheUnionObject.QueryAppend(getDataSet1, getDataSet2);
</cfscript>
<!---Dump results--->
<cfdump var="#myUnionResult#">
<!---QueryAppend.cfc--->
<cfcomponent>
<cffunction name="QueryAppend" access="public" returntype="query"
output="false"
hint="This takes two queries and appends the second one to the first one.
Returns the resultant third query.">
<cfargument name="QueryOne" type="query" required="true" />
<cfargument name="QueryTwo" type="query" required="true" />
<cfset var LOCAL = StructNew() />
<cfquery name="LOCAL.NewQuery" dbtype="query">
(
SELECT
*
FROM
ARGUMENTS.QueryOne
)
UNION
(
SELECT
*
FROM
ARGUMENTS.QueryTwo
) ORDER BY Param1 ASC
</cfquery>
<cfreturn LOCAL.NewQuery />
</cffunction>
</cfcomponent>
我假设此默认排序行为是一些幕后的ColdFusion代码。谁能告诉我如何对默认的ORDER BY行为进行更改?
答案 0 :(得分:2)
一种快速解决方案是在您的select语句中添加一个字段,该字段将要排序的字段值以大写(ucase)排序,然后按该字段排序,但仍输出无大小写字段。类似于:
select *,
#ucase(name)# as upperName
from query
order by upperName