ORACLE中怎样比较VARCHAR2数值

isobelar 2010-01-21 10:48:49
请问在ORACLE中有什么办法能不用TO_NUMBER()函数对VARCHAR2类型的数值(FLOAT型)按大小进行排序?
有谁知道的请将办法告诉我,有帮助的一定加分,在线等...
...全文
980 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-01-21
  • 打赏
  • 举报
回复
oracle编程,当然是可以的,通过写存储过程来解决。
搜一下oracle存储过程的资料吧
如:http://tech.it168.com/a2009/0305/267/000000267674.shtml
isobelar 2010-01-21
  • 打赏
  • 举报
回复
就是,有没有什么办法在ORACLE里面进行编程?
wuyisky84 2010-01-21
  • 打赏
  • 举报
回复
plsql 中不能使用函数?? 那你应该解决系统的问题
wuyisky84 2010-01-21
  • 打赏
  • 举报
回复
先比较整数部分,在根据情况比较小数部分

比较整数部分的长度,首位非零长度大的大

在直接按照字符串比较大小

测试一下,应该能够找到方案
isobelar 2010-01-21
  • 打赏
  • 举报
回复
你说的办法的确可以,但是SQL语句里面不能用函数。这事系统的问题,我就是卡在这里了。
tangren 2010-01-21
  • 打赏
  • 举报
回复
可以转换成相同长度再排序
如:
create table test(col varchar2(10));
select * from test order by lpad(col,10,'0');
huangyunzeng2008 2010-01-21
  • 打赏
  • 举报
回复
是这样的,如果不考虑性能或其他意外情况,oracle会尽量来满足用户的期望操作,前提是要给出能让oracle帮你完成的数据,你给的这个串首先要是个小数,否则oracle无能为力了
duqiangcise 2010-01-21
  • 打赏
  • 举报
回复
SQL> select '88'-'77' from dual;

'88'-'77'
----------
11

如果不用to_number函数,只要你的varchar2能够在转换成number的前提下,oracle是会自动转型的。
isobelar 2010-01-21
  • 打赏
  • 举报
回复
不是专门针对ORACLE数据库的自定义标签。
crazylaa 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 isobelar 的回复:]
呵呵!这可能是底层的问题了。我的SQL语句是通过标签传到后台的。底层不能识别TO_NUMBER()函数。
[/Quote]
标签不认函数,汗。。。应该不存在啊。。。
isobelar 2010-01-21
  • 打赏
  • 举报
回复
呵呵!这可能是底层的问题了。我的SQL语句是通过标签传到后台的。底层不能识别TO_NUMBER()函数。
crazylaa 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 isobelar 的回复:]
你说的办法的确可以,但是SQL语句里面不能用函数。这事系统的问题,我就是卡在这里了。
[/Quote]
什么系统啊?不能用函数,那你的统计怎么办?
varchar2的数值比较一般要格式化成固定长度,小数点前后补齐的
小灰狼W 2010-01-21
  • 打赏
  • 举报
回复
最简单而且有效的还是to_number
另外float数值要进行数字比较,本来就应该存在varchar2类型的字段里
不用to_number的话就需要对比较的对象进行转换,转成和前者长度相等,小数位数相同的字符串来比较
jdsnhan 2010-01-21
  • 打赏
  • 举报
回复
为啥不能用to_number呢
isobelar 2010-01-21
  • 打赏
  • 举报
回复
直接比较式按照字符串从左向右进行比较的,会出现300>10000
ojuju10 2010-01-21
  • 打赏
  • 举报
回复
不能直接比较吗?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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