加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle SQL中的自定义顺序

发布时间:2020-12-12 14:24:11 所属栏目:百科 来源:网络整理
导读:我需要基于货币进行订单交易。 然而,我需要实现一个自定义订单,这使得USD总是在顶部,其余的应该排序asc。 例如 : BHT USD MYR JYP 应排序如下: USD BHT 日元 MYR 有一个简单的方法来处理这个? 不知道这是否符合简单: order by case when currency = '
我需要基于货币进行订单交易。
然而,我需要实现一个自定义订单,这使得USD总是在顶部,其余的应该排序asc。

例如 :

> BHT
> USD
> MYR
> JYP

应排序如下:

> USD
> BHT
>日元
> MYR

有一个简单的方法来处理这个?

不知道这是否符合简单:
order by 
    case 
       when currency = 'USD' then 1 
       when currency = 'BHT' then 2
       when currency = 'JPY' then 3
       when currency = 'MYR' then 4
       else 5
    end

或者更紧凑但Oracle具体:

order by decode(currency,'USD',1,'BHT',2,'JPY',3,'MYR',4,5)

上述使用数字定义排序顺序的解决方案不会自动对货币/ decode表达式中未提及的货币进行正确排序。

为了简单地将USD放在前面而不关心其余部分,“生成的”顺序标准也必须是字符值。在这种情况下,您可以使用以下命令:

order by 
    case 
       when currency = 'USD' then '001' 
       else currency
    end

其中使用“字母顺序”。这是因为字符在数字数字后排序。 (使用’AAA’而不是’001’也可以工作)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读