oracle排序问题--如何按asc顺序排序

snowdesert 2005-01-06 09:01:00
比如查询结果:
batch_no
-------------
ph888
ph333
ph1000
-------------
该字段为varchar2类型,oracle排序时按拼音序排的,就是以上所示顺序;
但我想要的结果是:
ph333
ph888
ph1000

即按asc顺序排,怎么实现呢
...全文
844 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
GerryYang 2005-01-06
  • 打赏
  • 举报
回复
order by ... asc [desc]
liuyi8903 2005-01-06
  • 打赏
  • 举报
回复
SQL> select * from test
2 ;

AA
--------------------
ph333
ph1000
ph888

SQL>
SQL> Select To_Number(Substr(Aa, 3, Length(Aa) ))
2 From Test
3 Order By To_Number(Substr(Aa, 3, Length(Aa) )) Asc
4 ;

TO_NUMBER(SUBSTR(AA,3,LENGTH(A
------------------------------
333
888
1000

SQL>
liuyi8903 2005-01-06
  • 打赏
  • 举报
回复
SQL> select * from test
2 ;

AA
--------------------
ph333
ph1000
ph888

SQL>
SQL> Select To_Number(Substr(Aa, 3, Length(Aa) ))
2 From Test
3 Order By To_Number(Substr(Aa, 3, Length(Aa) )) Asc
4 ;

TO_NUMBER(SUBSTR(AA,3,LENGTH(A
------------------------------
333
888
1000

SQL>
yxxx 2005-01-06
  • 打赏
  • 举报
回复
是对的,呵呵
我用自己的表调试时,出现了小的失误-_-#
ORARichard 2005-01-06
  • 打赏
  • 举报
回复
SQL> ed
已写入文件 afiedt.buf

1 create table tb as select 'ph888' batch_no from dual union
2 select 'ph333' from dual union
3* select 'ph1000' from dual
4 /

表已创建。

SQL> select * from tb;

BATCH_
------
ph1000
ph333
ph888

SQL> select * from tb order by to_number(replace(batch_no,'ph'));

BATCH_
------
ph333
ph888
ph1000

小孬,怎么有错?
yxxx 2005-01-06
  • 打赏
  • 举报
回复
我为什么是按这样的顺序排:
ph1000
ph333
ph888

另外,order by to_number(replace(batch_no,'ph'))有问题吧,
报错啊
fuxia 2005-01-06
  • 打赏
  • 举报
回复
order by to_number(batch_no)
ORARichard 2005-01-06
  • 打赏
  • 举报
回复
order by to_number(replace(batch_no,'ph'))
snowdesert 2005-01-06
  • 打赏
  • 举报
回复
即便只有 333,888,1000,oracle依然是按拼音序排的啊
ORARichard 2005-01-06
  • 打赏
  • 举报
回复
order by replace(batch_no,'ph')
snowdesert 2005-01-06
  • 打赏
  • 举报
回复
感谢所有参与者,尤其感谢ORARichard(没钱的日子......) ,结贴
ORARichard 2005-01-06
  • 打赏
  • 举报
回复
ph1000
ph333
ph888
这种就是字符序啊,不是什么汉语序
你到底要什么样的结果。把你要遵循的同种规范用数据例举出来。
snowdesert 2005-01-06
  • 打赏
  • 举报
回复
那个“ph”只是举例子,实际中格式可能不同:
也许是ah333,.....
也许是330088-2,......
但每次排序时的记录格式必遵循同种规范,
问如何才能按字符序排序,而不是按汉语序

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧