oracle sql 按in中的内容进行排序



oracle sql 按in中的内容进行排序  比如 select * from User where  table_name in(’235′,
‘dsafas’,
‘fsafsa’,
‘gdghdh’,
);
怎么使查出来的结果按in里的id号排序?

实际上:结查询出的结果是按照ASCLL编码排序的,如果想要按照in里面的内容排序,可以参照如下做法:

select * from table_name t
where t.id in
(
’235′,
‘dsafas’,
‘fsafsa’,
‘gdghdh’,
)
order by decode
(
t.id,
’235′,1,
‘dsafas’,2,
‘fsafsa’,3,
‘gdghdh’,4);

这种做法对数据量较小的是没有问题的,但是如果超过1000条是不行的,一来in的数量限制是1000,二来不便于书写sql。

还在期待更好的方案。