我有一个从 SP 返回的结果集,然后在 QoQ 中进行操作。结果以 ABCabc 顺序显示。我希望它们按 AaBbCc 顺序排列。
例如,假设 "names" 列包含值 "Steve, Andy, anuj, bill, Mike" 。当我按名称排序时,结果按以下顺序列出:
- 安迪、迈克、史蒂夫、阿努杰、比尔
而不是我想要的顺序,即:
- 安迪、阿努杰、比尔、迈克、史蒂夫”
我有一个从 SP 返回的结果集,然后在 QoQ 中进行操作。结果以 ABCabc 顺序显示。我希望它们按 AaBbCc 顺序排列。
例如,假设 "names" 列包含值 "Steve, Andy, anuj, bill, Mike" 。当我按名称排序时,结果按以下顺序列出:
而不是我想要的顺序,即:
解决此问题的一种方法是选择强制它降低或升高的列,然后按该列排序。这个例子在 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