+ -
当前位置:首页 → 问答吧 → MSSQL,帮忙写下批处理代码

MSSQL,帮忙写下批处理代码

时间:2010-12-28

来源:互联网

表“dbo.ptype”          字段1“standard”         字段2“unitrate1“

字段1内容格式:
3.5*100
1.2*80
2*100
3*200
4*100
7*200
6*300
.............

实现:
1.如果字段1前数小于4(指*前面的数值小于4),字段2 替换成100
2.如果字段1前数大于4且小于5.8,字段2 替换成50
3.如果字段1前数大于5.8,字段2 替换成25

例子:
字段1=2*300   字段2=100
字段1=1.2*100   字段2=100
字段1=4*200   字段2=50
字段1=5.9*100   字段2=25
字段1=7*100   字段2=25
........

作者: qq1986114   发布时间: 2010-12-28

用这个公式就可以
=IF(--LEFT(A1,FIND("*",A1,1)-1)<4,LEFT(A1,FIND("*",A1,1))&100,IF(AND(--LEFT(A1,FIND("*",A1,1)-1)>=4,--LEFT(A1,FIND("*",A1,1)-1)<5.8),LEFT(A1,FIND("*",A1,1))&50,IF(--LEFT(A1,FIND("*",A1,1)-1)>=5.8,LEFT(A1,FIND("*",A1,1))&25,"")))

作者: kwinawyeth   发布时间: 2010-12-28

update ptype Set unitrate1=(Case When cast(left(standard,CharIndex('*',standard)-1) As decimal(12,4))>=5.8 then 25
When cast(left(standard,CharIndex('*',standard)-1) As decimal(12,4))>=4 then 50 else 100 end)

作者: Renco   发布时间: 2010-12-28

引用:
原帖由 kwinawyeth 于 2010-12-28 10:45 发表
用这个公式就可以
=IF(--LEFT(A1,FIND("*",A1,1)-1)=4,--LEFT(A1,FIND("*",A1,1)-1)=5.8,LEFT(A1,FIND("*",A1,1))&25,"")))
好像SQL不是这样的哦

作者: qq1986114   发布时间: 2010-12-28

试了,好像不行,

作者: qq1986114   发布时间: 2010-12-28

因为是MSSQL,所以你需要自已调试,
原理是,先计算出星号在字符中的位置,然后,只取星号前的数字,
把取出的数据再与条件对比,取值,我在我这里调试是可以的,
你是用什么调试的呢??
是用存储过程吗?

作者: Renco   发布时间: 2010-12-28

热门下载

更多