查看: 3734|回复: 11

各位大侠帮个忙

[复制链接]
论坛徽章:
3
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:28优秀写手
日期:2014-02-26 06:00:13
跳转到指定楼层
1#
发表于 2007-10-17 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SQL> select cashier_no,sum(substr(lpad(time,4),1,2)*60+substr(lpad(time,4),3,2)) mintus from invoice_time
where cashier  2  _no=112
group  3   by cashier_no;

CASHIER_NO     MINTUS
---------- ----------
       112       9117

SQL> select cashier_no,sum(substr(lpad(time,4),1,2)*60+substr(lpad(time,4),3,2)) mintus from invoice_time
  2  group by cashier_no;
ERROR:
ORA-01722: invalid number



no rows selected
我想问一下,下面这条语句是那里错了??
论坛徽章:
57
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010新春纪念徽章
日期:2010-03-01 11:21:02
2#
发表于 2007-10-17 16:49 | 只看该作者
好像是数据的问题,先把数据SELECET出来看看。

使用道具 举报

回复
论坛徽章:
18
生肖徽章:鼠
日期:2006-09-07 17:01:082008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章:蛇
日期:2007-09-26 17:09:49生肖徽章:猪
日期:2007-09-26 17:09:04生肖徽章:马
日期:2007-09-26 17:03:24生肖徽章:龙
日期:2007-09-26 17:02:43生肖徽章:兔
日期:2007-09-26 17:02:19生肖徽章:羊
日期:2007-09-26 12:35:44生肖徽章:虎
日期:2007-09-18 15:23:56生肖徽章:狗
日期:2007-07-02 11:26:12
3#
发表于 2007-10-17 17:35 | 只看该作者
非数字型数据当成数字型数据来操作或者非字符数据当成字符数据来操作。。。。。

使用道具 举报

回复
论坛徽章:
3
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:28优秀写手
日期:2014-02-26 06:00:13
4#
 楼主| 发表于 2007-10-18 09:43 | 只看该作者
invoicd_date         CASHIER_NO         LK     AMOUNT    MINTIME    MAXTIME       TIME
------------------ ---------- ---------- ---------- ---------- ---------- ----------
14-OCT-07                 119        211    8703.44        910       1500        550
14-OCT-07                 120        199    7742.22        835       1429        554
14-OCT-07                 123        231    8328.82       1505       2141        636
14-OCT-07                 124         50    3806.41       1456       2112        656
14-OCT-07                 145        260   10747.93       1501       2138        637
14-OCT-07                 154        219    7309.62        910       2059       1149
(字段全部为束型)

使用道具 举报

回复
论坛徽章:
3
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:28优秀写手
日期:2014-02-26 06:00:13
5#
 楼主| 发表于 2007-10-18 10:03 | 只看该作者
字段属性全部为数值型

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
6#
发表于 2007-10-18 10:07 | 只看该作者
substr(lpad(time,4),1,2)*60+substr(lpad(time,4),3,2)这个也行?字符串怎么用‘+’,你最好先to_number吧

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
7#
发表于 2007-10-18 10:11 | 只看该作者
最初由 shenghuan96 发布
[B]substr(lpad(time,4),1,2)*60+substr(lpad(time,4),3,2)这个也行?字符串怎么用‘+’,你最好先to_number吧 [/B]


但是奇怪的是他加了条件就不会出错呀。。

使用道具 举报

回复
论坛徽章:
57
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010新春纪念徽章
日期:2010-03-01 11:21:02
8#
发表于 2007-10-18 10:12 | 只看该作者
SYS.YUDONG>select sum(substr(lpad(5,4),1,2)*60+substr(lpad(55,4),3,2)) from dual;
select sum(substr(lpad(5,4),1,2)*60+substr(lpad(55,4),3,2)) from dual
           *
ERROR at line 1:
ORA-01722: invalid number


SYS.YUDONG>select sum(substr(lpad(5,4),1,2)*60+substr(lpad(55,4),3,2)) from dual where 1=2;

SUM(SUBSTR(LPAD(5,4),1,2)*60+SUBSTR(LPAD(55,4),3,2))
----------------------------------------------------


1 row selected.

SYS.YUDONG>select sum(substr(lpad(5555,4),1,2)*60+substr(lpad(5555,4),3,2)) from dual;

SUM(SUBSTR(LPAD(5555,4),1,2)*60+SUBSTR(LPAD(5555,4),3,2))
---------------------------------------------------------
                                                     3355

1 row selected.



如果执行了LPAD ,ORACLE给做了隐式数据类型转换,数字类型为何还要用LPAD去处理格式?如果非要处理TO_NUMBER处理一下。

使用道具 举报

回复
论坛徽章:
7
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
9#
发表于 2007-10-18 10:14 | 只看该作者
隐式数据转换,语句没什么问题。
关键是数据问题。

使用道具 举报

回复
论坛徽章:
57
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010新春纪念徽章
日期:2010-03-01 11:21:02
10#
发表于 2007-10-18 10:17 | 只看该作者
LPAD汉书使用也有问题

SYS.YUDONG>select lpad(15,4) from dual;

LPAD
----
  15

1 row selected.


默认补充空格或者空串。

SYS.YUDONG>SELECT LENGTH(lpad(15,4)) FROM DUAL;

LENGTH(LPAD(15,4))
------------------
                 4

1 row selected.


标准格式:

LPAD(XXXXX,10,'YYYY')


使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表