覆盖SQL Server默认排序顺序

时间:2017-01-12 21:01:51

标签: sql sql-server

为了正确匹配'数据到另一个数据源,我希望为此查询添加一些内容(可能是排序规则?),以便返回结果A-Z 0-9而不是现在的0-9 A-Z

SELECT TOP 1 order_id
FROM orders
WHERE order_id IS NOT NULL
ORDER BY order_id

请注意,order_idnvarchar字段。

在这个例子中,我正在寻找订单04394而不是订购ASK284,因为我正在寻找。

2 个答案:

答案 0 :(得分:4)

这会强制Alpha超过数字

SELECT TOP 1 order_id
FROM orders
WHERE order_id IS NOT NULL
ORDER BY case when order_id like '[0-9]%' then 1 else 0 end
        ,order_id

答案 1 :(得分:0)

您可以通过在每个条件的CASE表达式上进行排序来完成此操作:

Select      Top 1
            order_id
From        orders
Where       order_id Is Not Null
Order By    Case When Order_Id Like '[A-Z]%' Then 0 Else 1 End,
            Case When Order_Id Like '[0-9]%' Then 0 Else 1 End,
            Order_Id Asc;