首页 > 解决方案 > 如何在我在 oracle 中的“IN”中输入结果数据时对结果数据进行排序

问题描述

我将搜索条件放在“IN”()中,并希望它按顺序显示,因为它是 oracle 中的“IN”。

'IN'() 中的数据是LOGIN_ID 字段的数据,它是唯一的,由字符串类型组成。

因此,例如,查询将如下所示,

select login_id from table where login_id in ('1234', 'abcd', '12cd')';

结果必须像这样显示,

=======
login_id
=======
'1234'
'abcd'
'12cd' 

错误结果的例子是这样的,

=======
login_id
=======
'abcd'
'12cd'
'1234'

提前致谢!

标签: sqldatabaseoracleselectsql-order-by

解决方案


没有特定的 Oracle 特性。

您可以使用case表达式:

select login_id 
from table 
where login_id in ('1234', 'abcd', '12cd')
order by case login_id
    when '1234' then 1
    when 'abcd' then 2
    when '12cd' then 3
end

decode()可以稍微缩短语法:

order by decode(login_id, '1234', 1, 'abcd', 2, '12cd', 3)

推荐阅读