QuerySort

Description

This function sorts a query where the sorting algorithm is passed at runtime in the form of closure.

Returns

Returns the sorted query.

Category

Query functions

History

  • Adobe ColdFusion (2018 release): Returns the sorted query.
  • Adobe ColdFusion (2016 release): Added the function

See also

QueryEach, QueryFilter, QueryKeyExists

Syntax

boolean QuerySort(Object query , UDFMethod sortFunc)
boolean QuerySort(Object query , UDFMethod sortFunc)
boolean QuerySort(Object query , UDFMethod sortFunc)

Parameters

Parameter

Description

query

(Required) The query to be sorted.

sortFunc

(Required) Sort function to be used.

Heading 1

<cfscript>
myQuery = queryNew("id,name,amount","Integer,Varchar,Integer",
[
{id=1,name="One",amount=15},
{id=2,name="Two",amount=18},
{id=3,name="Three",amount=32},
{id=4,name="Four",amount=53}
]);
sortedQuery=QuerySort(myQuery,function(obj1,obj2){
return compare(obj1.name,obj2.name) // compare on names
})
writeOutput("The sorted query is:")
writeDump(sortedQuery)
</cfscript>
<cfscript> myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", [ {id=1,name="One",amount=15}, {id=2,name="Two",amount=18}, {id=3,name="Three",amount=32}, {id=4,name="Four",amount=53} ]); sortedQuery=QuerySort(myQuery,function(obj1,obj2){ return compare(obj1.name,obj2.name) // compare on names }) writeOutput("The sorted query is:") writeDump(sortedQuery) </cfscript>
<cfscript>
    myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", 
                [ 
                        {id=1,name="One",amount=15}, 
                        {id=2,name="Two",amount=18}, 
                        {id=3,name="Three",amount=32},
                        {id=4,name="Four",amount=53}
                ]); 
    sortedQuery=QuerySort(myQuery,function(obj1,obj2){
        return compare(obj1.name,obj2.name) // compare on names
    })
    writeOutput("The sorted query is:")
    writeDump(sortedQuery)
</cfscript>

Output

Example 2

<cfscript>
qoptions = {result="myresult", datasource="cfbookclub", fetchclientinfo="yes"};
sampleQuery = QueryExecute("select * from books order by bookid", [] ,qoptions);
sortStatus = QuerySort(sampleQuery, function(e1, e2){
return compare(e1.TITLE, e2.TITLE);
});
writeOutput("Sort Successful: " & sortStatus);
writeDump(sampleQuery);
</cfscript>
<cfscript> qoptions = {result="myresult", datasource="cfbookclub", fetchclientinfo="yes"}; sampleQuery = QueryExecute("select * from books order by bookid", [] ,qoptions); sortStatus = QuerySort(sampleQuery, function(e1, e2){ return compare(e1.TITLE, e2.TITLE); }); writeOutput("Sort Successful: " & sortStatus); writeDump(sampleQuery); </cfscript>
<cfscript>
               qoptions = {result="myresult", datasource="cfbookclub", fetchclientinfo="yes"};
               sampleQuery = QueryExecute("select * from books order by bookid", [] ,qoptions);

               sortStatus = QuerySort(sampleQuery, function(e1, e2){
                              return compare(e1.TITLE, e2.TITLE);
               });
               writeOutput("Sort Successful: " & sortStatus);
               writeDump(sampleQuery);
</cfscript>

The script sorts the query by Title. The script returns an array of structs.

Using member function

<cfscript>
myResult=QueryExecute("SELECT * FROM EMPLOYEES",[],{datasource="cfdocexamples"});
status=myResult.sort(function (c1,c2){
return compare(c1.DEPARTMENT,c2.DEPARTMENT);
});
WriteDump(myResult);
</cfscript>
<cfscript> myResult=QueryExecute("SELECT * FROM EMPLOYEES",[],{datasource="cfdocexamples"}); status=myResult.sort(function (c1,c2){ return compare(c1.DEPARTMENT,c2.DEPARTMENT); }); WriteDump(myResult); </cfscript>
<cfscript>
       myResult=QueryExecute("SELECT * FROM EMPLOYEES",[],{datasource="cfdocexamples"});
       status=myResult.sort(function (c1,c2){
             return compare(c1.DEPARTMENT,c2.DEPARTMENT);
       });
       WriteDump(myResult);
</cfscript>

The output is a table with values in the column DEPARTMENT sorted.

Get help faster and easier

New user?