首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion (铁路) QoQ -最后一个空值

ColdFusion (铁路) QoQ -最后一个空值
EN

Stack Overflow用户
提问于 2013-04-08 03:53:28
回答 3查看 248关注 0票数 2

我的理解是,使用QoQ时,nulls last是不可能的。无论我是按升序还是降序对行进行排序,如何使coldfusion在最后对空值进行排序?

我试过在查询的SELECT和ORDER部分使用case,但看起来CF不喜欢它(在railo上运行)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-08 05:17:30

可能有更好的选项,但一个简单的技巧是添加一个表示排序优先级的列。为具有非空值的记录分配比空值更高的优先级。然后,只需先按优先级值排序,然后再按所需的任何其他列排序。由于空值具有较低的优先级编号,因此它们将始终排在最后。

代码语言:javascript
复制
    <!--- 1 - non-null values 2 - null values --->
    SELECT 1 AS SortOrder, SomeColumn
    FROM   theQuery
    WHERE  SomeColumn IS NOT NULL
    UNION ALL
    SELECT 2 AS SortOrder, SomeColumn
    FROM   theQuery
    WHERE  SomeColumn IS NULL
    ORDER BY SortOrder, SomeColumn ASC

(值得注意的是,您可以使用order by而不是union在数据库查询中执行类似的操作。)

票数 4
EN

Stack Overflow用户

发布于 2013-04-08 05:21:09

ColdFusion和Railo上的QoQ都有非常有限的SQL词汇,并且没有处理如何整理空值的内容。因此,正如@Leigh所建议的,添加另一列--不带任何空值--表示您想要的排序。

或者,如果可能的话,最好在数据库中处理所有这些内容。显然,这并不总是可能的(因为您查询的记录集可能一开始就不是来自DB ;-)

票数 2
EN

Stack Overflow用户

发布于 2013-04-08 08:13:43

...there是另一种方法,但它依赖于值为NULL而不是空的''。我在这里从内存开始,但本质上就是这样,使用||仅在值为非空值时有效,所以首先使用空值降序排序,我得到最后的值。

代码语言:javascript
复制
 <cfquery>
    SELECT *, '1' || #sortCol# as isNull
    FROM table
    ORDER BY isNull desc, #sortCol#
 </cfquery>

注意到我实际上并不提倡使用它,我不确定CF是否会以同样的方式处理它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15867049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档