有一列是Vchar类型的.如下:item_num
12
34
LR45
23我想按这一列进行排序.这样写的.select item_num from table1 order by (case when substr(item_num,1,2)='LR' then item_num else to_number(item_num) end)就是想让那些数字的按顺序排.这样写提示:这里需要char,但是确是number错误.请指教..谢谢.
12
34
LR45
23我想按这一列进行排序.这样写的.select item_num from table1 order by (case when substr(item_num,1,2)='LR' then item_num else to_number(item_num) end)就是想让那些数字的按顺序排.这样写提示:这里需要char,但是确是number错误.请指教..谢谢.
解决方案 »
- oracle存储过程通过ftp包上传文件txt后乱码问题
- 为什么会连续备份了两次?难道是因为星期天没开机,星期一一开机就自动备份了?
- 请问专家:oralce的相关文件丢失,如何恢复?
- oracle10g clob问题
- 在virtual box上安装cluster提示错误
- 我用SQL PLUS, SELECT 一个有50万条记录的表,为什么会中途停止,将近一个小时候停止
- 在创建表时,怎么设置主键呢!!
- 求救!ORACLE9起不来了!大侠们帮帮忙!
- Oracle11gR2的安装中报错磁盘容量不够怎么解决
- 请教用C#查询ORACLE语句,
- 关于.profile设置问题
- oracel超级菜鸟提问一个查询语句
order by to_number
(
case
when substr(item_num,1,2)='LR' then
'9999999999'||substr(item_num,3)
else
item_num
end
)语句中的'9999999999'的用意是:(1) 让含有字母的数据行排在后面并且含有字母的行也可以排序.
(2) 这他9的字符串的长度可以随意改变.只要确保大于等于ITEM_NUM列所含有的实际数据的最大长度就可以了.
item_num
12
LR45
24
LR35
53 你想要的输出结果是什么样的?item_num
12
23
LR35
LR45
53
这样?
24
53
LR35
LR45能这样最好.如果只是order by 它会只按第一个字符排序.
如果就要这样的结果的话,直接order by item_num不就行了么
4343
3423
23如果上面的话,直接ORDER BY 会产生如下结果:13
23
3423
4343也就是只按第一个排.不过还是谢谢你了.
select item_num from table1 order by item_num是先按第一个字母排,如果第一个字母相同(区分大小写),再按第二个字母排数字排在字符前
另外,order by不是只按第一个字符排序,是全部顺序排。不过问题解决了就好。
434
3425
23 如果上面的话,直接ORDER BY 会产生如下结果: 134
23
3423
434刚才写错了.你看这种结果,我是想按照数据排序.这不是我想要的.