通常我们用order by排序时,都是先排数字,后排字母.怎样让它先排字母,再排数字?如下字段有: order by后的结果 希望的结果
3 1 A
D 2 B
1 3 C
B A D
C B 1
A C 2
2 D 3
3 1 A
D 2 B
1 3 C
B A D
C B 1
A C 2
2 D 3
解决方案 »
- 查找查询结果中存在的特定序列问题
- C++BUILDER怎样访问数据库中的表?ORACLE数据库里所建的表放在哪个表空间才可以被前台访问?
- 请教各位高手一条SQL语句。。。。。。
- sql语句中的字段区分大小写么?
- 创建表的问题.急,急,急!!!!!
- IT综合技术交流群(15557577)现急需软件开发方面高手加盟助阵
- 急需帮助:在WindowsXp Pro下安装Oracle11g无法创建数据库
- 一句简单的sql语句!急
- 请问,三条统计的sql语句,能否写成一条?
- 有了ORACLE9i的前三张CD,第四张client是否不用了?
- pl/sql develop 存储过程 pls-00103
- 谁能帮忙把我这个触发器 该短些,太长了,oracle 8.0
from tb
order by case when col between 'A' and 'Z' then 0 else 1 end ,col
;
insert into tb
select '3','1'
union all select 'D','2'
union all select '1','3'
union all select 'B','A'
union all select 'C','B'
union all select 'A','C'
union all select '2','D'select * from tb
/*
3 1
D 2
1 3
B A
C B
A C
2 D
*/select *
from tb
order by case when b between 'A' and 'Z' then 0 else 1 end ,b
/*
B A
C B
A C
2 D
3 1
D 2
1 3
*/
--适用于字母大小写数字
SELECT A
FROM TT
ORDER BY CASE
WHEN SUBSTR(A, 1, 1) > '0' AND SUBSTR(A, 1, 1) < '9' THEN
'x' || A
ELSE
A
END;
SELECT ID FROM TTT ORDER BY (CASE WHEN SIGN(ASCII(ID)-65)>=0 THEN to_number(ASCII(ID)) ELSE to_number(ID) END )