注册 登录
编程论坛 SQL Server论坛

[求助]这类麻烦如何解决?

roy78 发布于 2007-08-23 19:16, 1399 次点击
只有本站会员才能查看附件,请 登录

select sum(出口规格*数量)/sum(出口重量) from table
但我要的是出口规格字段内容中第一个 * 号 左边的数值?怎么去截取? (比如,0.36 0.38 ......)
望高手给一个完整的SQL语句,学习!!!期待中..
15 回复
#2
卡卡艾2007-08-23 20:25

用这一句可以实现你截取出口规格字段内容中第一个 * 号 左边的数值,
select substring(出口规格,0,5) from table
但是有个问题是:你要求和的话,需要转化一下,
因为substring(出口规格,0,5)不是数值型,不能用sum().

#3
roy782007-08-23 21:36
那请问怎么转换呢?刚学不久,在基本语句,所以没有接触过这个,完整的写法应该是什么样的?请教教好吗?
#4
roy782007-08-24 07:55
有人可以帮帮的吗?
#5
fengmumei2007-08-24 07:55
出口规格的格式固定吗?或者说“出口规格”中的三个参数的长度是不是固定?
#6
卡卡艾2007-08-24 09:07
好吧,我给你写出来:
首先截取:
select substring(出口规格,0,5) from table
然后转化数据类型:
select cast(substring(出口规格,0,5) as decimal(5,2)) from table1
这样的话就可以进行求和运算了,所以完整的语句如下:
select sum(cast(substring(出口规格,0,5) as decimal(5,2))) from table1 //这句就是你需要的.




#7
roy782007-08-24 09:33
谢谢卡卡,谢谢fengmumei  另回答fengmumei的问题,规格中第一个*号左边的字符串不是固定的个数.我将把卡卡的语句用上来试试,感谢..
#8
roy782007-08-24 10:11
如果出口规格第一个*号左边的字符数量不是固定的,这时应该怎么截取呢? 比如,0.3*1003*C 0.45*1003*C 0.587*1003*C 我就想截取第一个*号左边所有的数?
在线急期待....
#9
xinzheng2007-08-24 11:41
以下是引用roy78在2007-8-23 19:16:31的发言:

select sum(出口规格*数量)/sum(出口重量) from table
但我要的是出口规格字段内容中第一个 * 号 左边的数值?怎么去截取? (比如,0.36 0.38 ......)
望高手给一个完整的SQL语句,学习!!!期待中..

select substring(出口规格,0,charindex('*',出口规格)) from table

#10
aubblove2007-08-24 11:41
查找到'*'的起始位置应该就可以了,你试一下
select sum(cast(substring(出口规格,1,charindex('* ',出口规格)) as decimal(5,2))) from table1
#11
hancai882007-08-24 12:16
以前自己只会一点查询语句,了解一点数据库知识,就觉得自己熟悉数据库了。和大家比起来偶太失败了。
#12
roy782007-08-24 13:49
谢谢大家,按照九楼的朋友写的,可以正确的截取,10楼大哥的语句还不知道结果是怎么样的,现在在报错,数据类型转换的问题,....哎...虽然失望,还是很感激你们这样热心的朋友 ....希望大家一起进步....呵呵,我这新手这几天学了不少...将数据类型 nvarchar 转换为 numeric 时出错。

[此贴子已经被作者于2007-8-24 14:15:43编辑过]


#13
fengmumei2007-08-24 14:30
九楼的方法就可以了
#14
roy782007-08-24 14:57
但是一旦加上计算公式就不对了.
#15
aubblove2007-08-24 15:45
因为你还要转换数据
#16
kkzjk2007-09-04 22:23
select sum((convert(decimal(5,2),substring(出口规格,1,convert(smallint,charindex('* ',出口规格)-1))))*数量)/sum(出口重量) from table1
1