如何通过语言排序将数字排在字母之前?

问题描述 投票:0回答:1

在使用二进制排序规则的 Oracle SQL 查询中,数字排在字母之前。但如果查询使用特定于语言的排序规则来启用语言排序,则数字将排序在字母之后。
示例:https://dbfiddle.uk/BBfvb2lh

这不同于例如.NET 排序,即使使用语言排序,数字也会排在字母之前。
示例:https://dotnetfiddle.net/65G3na

如何在 Oracle SQL 查询中使用语言排序 在字母之前对数字进行排序?

sql database oracle sorting sql-order-by
1个回答
0
投票

假设您可以先接受排序数字,然后再接受其他所有内容,那么您可以使用以下逻辑:

SELECT val
FROM yourTable
ORDER BY
    CASE WHEN REGEXP_LIKE(val, '^[0-9]') THEN 1 ELSE 2 END,  -- numbers first
    val;                                                     -- then sort by val
© www.soinside.com 2019 - 2024. All rights reserved.