SQL统计问题?(30分)

  • 主题发起人 主题发起人 pcw
  • 开始时间 开始时间
P

pcw

Unregistered / Unconfirmed
GUEST, unregistred user!
select sum(convert(int,substring(name,1,3))) as tt from table
运行出错!请大虾指教!.
 
错误信息?
很有可能是convert是发现字符串不能转换如name为"monday"时就变成了convert(int,"mon")
 
什么错误贴出来!
 
能不能用PL/SQL过程收集统计:
DBMS_STATS.GATHER_SCHEMA_STATS();
 
首先知道你的数据库是什么???支持你写的这些函数?
其实大家很多时候有误解,认为一个SQL在一种数据库可以,在另外一种也可以。
要知道任何数据库解释SQL都必须依靠它自身的语法去解释和执行
其次sonie说的也是可能的原因之一,
你可以先测试select convert(int,substring(name,1,3)) from table是否正确
 
对不起!怪我说不清楚.
用的是SQL SERVER 7.0 数据库,用DELPHI5编程,是函数substring()出错.
 
你改用这个看看
select sum(cast(substring(isnull(name,'0'),1,3) as int)) as tt from table
 
最好是检查一下现在你数据库里name字段里的值
如果不能改动
我建议你在后面加个条件
select sum(convert(int,substring(name,1,3))) as tt from table
where (left(name,1)>='0' and left(name,1)<='9' ) and
(left(name,2)>='0' and left(name,2)<='9' ) and
(left(name,3)>='0' and left(name,3)<='9' ) and
(left(name,1)>='0' and left(name,1)<='9' )
//这样保证了substring(name,1,3)肯定是正确的,不过效率会降低!!
因为left函数会有大量的耗费
 
zml的写法不能保证正确。因为如果name的值不是空的,而是因为前3位包含非数字字符就不行了
//BTW:我的写法最后多拷贝了一句,SHY!我想我意思应该明白吧,呵呵
 
Onedot 你的写法完全可以简化嘛! 还不容易出错! 看:
select sum(Convert(int ,substring(Name,1,3))) as tt from Table
where isnumeric(substring(Name,1,3))=1
你的有点错!我不明白错在哪?我有意将一个记录改成了非数字的。
 
你可以把你的SQL语句在SQL SERVER里面,看是否正确。
 
hehe,NOD,NOD,我没有查阅有关这个函数返回值问题
我的是个土方法,但没有错,我测试过了
 
聚集函数要和GROUP BY 结合使用!
查一查着两个函数是不是有参数!
 
hailen:其实SQL中都已经隐式有GROUP BY
 
分特,自己太糊涂,把两个东西搞混了。
聚集函数隐式有GROUP BY,但其机制是默认将所有记录作为一组。
而不是对主键分组,SHY!!
//默认按主键分组的是别的东西
 
运行ZML的语句时与本人的语句(select sum(convert(int,substring(name,1,3))) as tt from table
)
出现同样的错误:syntax error converting the varchar value'0:' to a column of data type int.
不能通过,substring(name,6,3)值保正是数值(或3位''值),有时数值后面可能有1或2位''值.
Onedot和随风飘马的写法也不行.希望各位大虾继续指教!
 
补充:
name字段内容是'罚款:100;其它...'或'罚款:20 ;其它...'或'罚款: ;其它...'
罚款后面保持三位.如何统计罚款数额.
 
很遗憾!竟然未人回答.分数太少?现增加100份.
 
我测试了一下,如果是NAME字段内容是“罚款:100”
他的写法应该是
select sum(convert(int,substring(name,4,3))) as tt from table1
where isnumeric(substring(Name,4,3))=1
而不是substring(name,6,3)!!!
//这里的原因可能和MS SQL对汉字的处理不是我们想象的那样
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
750
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部