我有一字段类型为Varchar的,格式大概为*.*.*的 该如何排序呢,默认排序的话 只会根据每位数进行排序,而我想根据.分隔符进行排序!
解决方案 »
- 一个select要求其中的某个字段必须在另一个select中存在怎么写sql?
- oracle 执行顺序
- 时间序列问题(难阿)
- Oracle Select question
- 用存储过程在temps表里插入五十条数据简单问题
- oracle 中 把IF A=1 THEN RETURN ‘男’ ELSE RETURN ‘女’ END IF; 语句用一个函数表达出来
- 求助:MSSQL转Oracle问题(自定义表,返回结果集问题),在线等,谢谢了。
- 在客户端能对oracle8数据库里的表进行备份
- 请问怎样从oracle导出表数据?
- 找一个函数
- linux下安装ORACLE字符集设置的问题
- 如何查看是否安装了Oracle label security模块
默认order的话会是 1.1 1.10 1.2 而我想要是1.1 1.2 1.10
分隔符'.'的个数是不一定的!
----------------------------------------
1.1
1.2
1.10-- 如果你的数据里每条记录只有一个句点的话,可以这样:已用时间: 00: 00: 00.00
scott@SZTYORA> select col1,
2 substr(col1,1,instr(col1,'.',1,1)-1) as c1,
3 substr(col1,instr(col1,'.',1,1)+1) as c1
4 from test
5 order by lpad(substr(col1,1,instr(col1,'.',1,1)-1),4,0),
6 lpad(substr(col1,instr(col1,'.',1,1)+1),4,0);COL1 C1 C1
---------------------------------------- -------------------- --------------------
1.1 1 1
1.2 1 2
1.10 1 10已用时间: 00: 00: 00.01
-- (如果能够确保字符串是合法的数值,也可以直接将得到的每部分字符串用to_number()函数转换成数值,
-- 再排序!方法很多,关键看自己肯不肯去动脑子啦!scott@SZTYORA> select col1,
2 substr(col1,1,instr(col1,'.',1,1)-1) as c1,
3 substr(col1,instr(col1,'.',1,1)+1) as c1,
4 lpad(substr(col1,1,instr(col1,'.',1,1)-1),4,0) cc1,
5 lpad(substr(col1,instr(col1,'.',1,1)+1),4,0) cc2
6 from test
7 order by lpad(substr(col1,1,instr(col1,'.',1,1)-1),4,0),
8 lpad(substr(col1,instr(col1,'.',1,1)+1),4,0);COL1 C1 C1 CC1 CC2
---------------------------------------- -------------------- -------------------- -------------------- --------------------
1.1 1 1 0001 0001
1.2 1 2 0001 0002
1.10 1 10 0001 0010已用时间: 00: 00: 00.01