0

我有一个从 SP 返回的结果集,然后在 QoQ 中进行操作。结果以 ABCabc 顺序显示。我希望它们按 AaBbCc 顺序排列。

例如,假设 "names" 列包含值 "Steve, Andy, anuj, bill, Mike" 。当我按名称排序时,结果按以下顺序列出:

  • 安迪、迈克、史蒂夫、阿努杰、比尔

而不是我想要的顺序,即:

  • 安迪、阿努杰、比尔、迈克、史蒂夫”
4

1 回答 1

3

解决此问题的一种方法是选择强制它降低或升高的列,然后按该列排序。这个例子在 CF9 和 CF11 中为我工作。请原谅快速和粗略的代码,但只是将其修改以显示排序工作:

<cfscript>
    qry = QueryNew("TESTING");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "A");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "B");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "C");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "a");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "b");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "c");
</cfscript>

<cfquery name="qry2" dbtype="query">
    SELECT TESTING, LOWER(TESTING) AS TMP FROM qry ORDER BY TMP</cfquery>

<cfoutput query="qry2">
    #TESTING#<br />
</cfoutput>

这给了我以下输出:

A
a
B
b
C
c

如果您改为通过不执行 lower 或 upper 来执行订单,您最终会得到类似于您所描述的问题的输出:

<cfquery name="qry3" dbtype="query">
    SELECT TESTING, LOWER(TESTING) AS TMP FROM qry ORDER BY TESTING</cfquery>

<cfoutput query="qry3">
    #TESTING#<br />
</cfoutput>

在浏览器中输出:

A
B
C
a
b
c
于 2015-04-08T14:56:30.403 回答