| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1456 人关注过本帖
标题:请教关于substring与charindex的用法
只看楼主 加入收藏
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:4 
请教关于substring与charindex的用法
  fnumber     fname                 fmodel
BK70200081    分隔板-等高可调式    700W$200L$0.8t
BK80100081    分隔板-等高可调式    800W$100L$0.8t
BK80200081    分隔板-等高可调式    800W$200L$0.8t
BL10400235    楼板-平板    200W$40H$400L$2.3t
BL10500205    楼板-平板    200W$40H$500L$2.0t
BL10600202    楼板-平板    200W$40H$600L$2.0t
BL10600205    楼板-平板    200W$40H$600L$2.0t
BL10600232    楼板-平板    200W$40H$600L$2.3t
BL10600235    楼板-平板    200W$40H$600L$2.3t
BL10700205    楼板-平板    200W$40H$700L$2.0t
BL10800202    楼板-平板    200W$40H$800L$2.0t
BL10800205    楼板-平板    200W$40H$800L$2.0t
BL10800232    楼板-平板    200W$40H$800L$2.3t
BL10800235    楼板-平板    200W$40H$800L$2.3t
上表我要实现的功能是各数字相乘所得的结果:
fnumber        fname                fmodel                        fweight
BK70200081    分隔板-等高可调式    700W$200L$0.8t              112000
BL10800235    楼板-平板            200W$40H$800L$2.3t          14720000
我用substring与charindex函数来实现分离,要是不用,都报substring函数参数有问题,
select substring(fmodel,1,charindex('*',fmodel)-2) from sheet1$
请问应怎么实现   
搜索更多相关主题的帖子: 用法 charindex substring 
2010-01-20 11:44
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 
请哪位会的大侠帮忙,只要能实现这种功能,在SQL中用什么方法都行

你微笑的面對整個世界,整個世界也將會微笑的面對你。
2010-01-20 13:58
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:10 
你的目的就是将fmodel字段分拆成 W、L、WEIGHT后相乘即可
----调试代码如下
SELECT '700W$200L$0.8t',charindex('W','700W$200L$0.8t'),
SUBSTRING('700W$200L$0.8t',0,charindex('W','700W$200L$0.8t')) AS W,
SUBSTRING('700W$200L$0.8t',charindex('$','700W$200L$0.8t')+1,charindex('L','700W$200L$0.8t')-charindex('$','700W$200L$0.8t')-1) AS L,
SUBSTRING('700W$200L$0.8t',charindex('L','700W$200L$0.8t')+2,LEN('700W$200L$0.8t')-charindex('L','700W$200L$0.8t')-2) AS WEIGHT,
CAST(SUBSTRING('700W$200L$0.8t',0,charindex('W','700W$200L$0.8t')) AS NUMERIC(10,2)) *
CAST(SUBSTRING('700W$200L$0.8t',charindex('$','700W$200L$0.8t')+1,charindex('L','700W$200L$0.8t')-charindex('$','700W$200L$0.8t')-1) AS NUMERIC(10,2)) *
CAST(SUBSTRING('700W$200L$0.8t',charindex('L','700W$200L$0.8t')+2,LEN('700W$200L$0.8t')-charindex('L','700W$200L$0.8t')-2) AS NUMERIC(10,2)) AS FWEIGHT
--你将上面代码中的'700W$200L$0.8t'用字段名 fmodel代替
SELECT fmodel,charindex('W',fmodel),
SUBSTRING(fmodel,0,charindex('W',fmodel)) AS W,
SUBSTRING(fmodel,charindex('$',fmodel)+1,charindex('L',fmodel)-charindex('$',fmodel)-1) AS L,
SUBSTRING(fmodel,charindex('L',fmodel)+2,LEN(fmodel)-charindex('L',fmodel)-2) AS WEIGHT,
CAST(SUBSTRING(fmodel,0,charindex('W',fmodel)) AS NUMERIC(10,2)) *
CAST(SUBSTRING(fmodel,charindex('$',fmodel)+1,charindex('L',fmodel)-charindex('$',fmodel)-1) AS NUMERIC(10,2)) *
CAST(SUBSTRING(fmodel,charindex('L',fmodel)+2,LEN(fmodel)-charindex('L',fmodel)-2) AS NUMERIC(10,2)) AS FWEIGHT
FROM 表
2010-01-20 13:59
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 
这样仍是和我的那个一样,出现"传递到 SUBSTRING 函数的长度参数无效。"的错误

你微笑的面對整個世界,整個世界也將會微笑的面對你。
2010-01-20 14:12
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
那就要检查你的数据了 你的数据中肯定存在 没有W或L或WEIGHT的数据
2010-01-20 15:12
快速回复:请教关于substring与charindex的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035089 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved