【问题标题】:Sort Order in SQL ServerSQL Server 中的排序顺序
【发布时间】:2010-08-26 10:37:57
【问题描述】:

我能否更改 SQL Server 数据库中的默认排序顺序,以便最后显示空值和零长度字符串。

它的 SQL Server 2000

我强调,如果可能的话,我想更改所有查询的默认顺序

【问题讨论】:

    标签: sql-server sql-order-by


    【解决方案1】:

    您几乎可以在order by 中使用case 进行任何排序。这里首先是 null 列,然后是空字符串,其余按 col1 和 col3 排序:

    select  *
    from    YourTable
    order by
            case when col1 is null then 1
                 when col1 = '' then 2
                 else 3
            end
    ,       col2
    ,       col3 desc
    

    【讨论】:

      【解决方案2】:

      不,您不能这样做:没有 ORDER BY,就没有默认排序顺序。这是一个很常见的问题,所以我写了一个罐头答案:Without ORDER BY, there is no default sort order

      【讨论】:

      • +1 我相信这是迄今为止真正解决问题的唯一答案。 OP 专门询问 default 排序顺序(不存在)
      • 我怀疑这不是他们的意思。他们希望能够做到order by x 并在结尾而不是开头包含空值和空字符串。
      • @Martin:我可以确认您是正确的:这正是他们的意思。也许它是我需要更改的排序规则。
      【解决方案3】:

      添加一个虚拟的 newcolumn = (length(targetcolumn)>0),并首先按此排序。

      【讨论】:

        猜你喜欢
        • 2017-05-28
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        相关资源
        最近更新 更多