【问题标题】:Custom ordering in TSQLSQL中的自定义排序
【发布时间】:2014-06-30 20:39:16
【问题描述】:

我需要为我的表实现自定义排序。例如,我有一个名为“TestTest”的表,其值为:a, d01, d04, d02, b。我需要选择数据并对它们进行排序,以便将带有“d”的值排在第一位,其余的将按字母数字排序。所以结果是d01,d02,d03,a,b

创建和插入数据的脚本:

CREATE TABLE TestTest(
Name varchar(200)
)
DELETE FROM TestTest

INSERT INTO TestTest( Name )
VALUES( 'a' )

INSERT INTO TestTest( Name )
VALUES( 'd01');

INSERT INTO TestTest( Name )
VALUES( 'd04');

INSERT INTO TestTest( Name )
VALUES( 'd02');

INSERT INTO TestTest( Name )
VALUES( 'b' );

感谢任何帮助;)

【问题讨论】:

标签: sql tsql


【解决方案1】:
Select *
From TestTest
Order By CASE WHEN LEFT(Name,1)='d' THEN 1 ELSE 2 END,Name

SQL Fiddle Demo

【讨论】:

    【解决方案2】:

    快速解决方案:

    Select * 
    from TestTest
    order by case when Name like 'd%' then 'aaaaa'+Name else Name end
    

    【讨论】:

      【解决方案3】:
      select * from TestTest order by case when Name='d01' then 1
                                                  when Name='d02' then 2
                                                  when Name ='d04' then 3
                                                  end  desc
      

      【讨论】:

      • 这将为 'a' 和 'b' 提供一个随机的灵魂提示
      猜你喜欢
      • 2019-12-06
      • 2010-12-24
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多