我有下表,
A B C
-------- ---------- -----------
Akhil Kerala 0008 – 0030
Athul Kerala 15
Basil Delhi 0031 – 0059
Rahul Chennai 32
Kishore New York 0060 – 0090
Anoop Mumbai 45
我必须根据C列对条目进行排序,列的排序顺序应该是这样的, 15
32
45
0008 - 0030
0031 - 0059
0060 - 0090
请咨询。提前谢谢。
答案 0 :(得分:0)
Oracle SQL:
select t.*,
to_number(decode(instr(c,' '),5,null,c)) atr1,
decode(instr(c,' '),5,c,null) atr2
from TEST_TAB t
order by atr1, atr2
如果表有很多行,并且经常执行查询,那么你应该添加这个索引:
create index sort_idx on TEST_TAB (
to_number(decode(instr(c,' '),5,null,c)),
decode(instr(c,' '),5,c,null)
);
如果您使用例如然后MSSQL数据库用CASE语句替换DECODE,用CHARINDEX替换INSTR。