order by 指定排序 两种方式
id | name | age | sex | class |
---|---|---|---|---|
1 | 张三 | 12 | 男 | 班级1 |
– | – | – | – | – |
2 | 李四 | 15 | 男 | 班级3 |
– | – | – | – | – |
3 | 王五 | 26 | 男 | 班级2 |
– | – | – | – | – |
4 | 赵六 | 17 | 男 | 班级4 |
– | – | – | – | – |
5 | 陈七 | 18 | 男 | 班级6 |
– | – | – | – | – |
6 | 王八 | 19 | 男 | 班级5 |
第一种方式 decode
select u.ID,u.name,u.age,u.sex from user u where sex=‘男’ order by decode(u.NAME,'张三 ',1,‘李四’,2,‘王五’,3,‘赵六’,4,‘陈七’,5,‘王八’,6)
第二种方式 instr 按截取后的字符串 在字符串的所在位置进行排序
select u.ID,u.name,u.age,u.sex from user u order by instr( ‘1,2,3,4,5,6’,substr(rtrim(u.class),3,3));
#rtrim() 去掉空格后