日期:2014-05-18  浏览次数:20514 次

SQL 更新语句,会的麻烦进来帮忙下
一个列车表有字段TrianName(列车名)和Speet(速度)。
更新提速,要求K字头的列车保持不变、T字头的列车提速20%,Z字头的列车提速25%。请问这样的更新语句怎么些的?是要一条语句写完,SET后面怎么根据条的判断而变化20%和25%的提速呢???

------解决方案--------------------
SQL code
update  tb set Speet=case left(TrianName,1) when 't' then Speet*(1.25)
when 'z' then Speet*(1.25)
else Speet
end

------解决方案--------------------

 update tb set Speet=(case when substring(TrianName,1,1)='K' then Speet
when substring(TrianName,1,1)='T' then (Speet+Speet*0.2)
when substring(TrianName,1,1)='Z' then (Speet+Speet*0.25)
end )
------解决方案--------------------
可以用存储过程判断,可参考语句:
 declare @Name varchar(100)
select id from dbo.[Table1] where TrianName=@Name
if @Name='K'
update dbo.[Table1] set Speet='' where TrianName=@Name
else if @Name='Z'
update dbo.[Table1] set Speet='' where TrianName=@Name 

------解决方案--------------------
探讨
一个列车表有字段TrianName(列车名)和Speet(速度)。
更新提速,要求K字头的列车保持不变、T字头的列车提速20%,Z字头的列车提速25%。请问这样的更新语句怎么些的?是要一条语句写完,SET后面怎么根据条的判断而变化20%和25%的提速呢???

------解决方案--------------------
用case when then
------解决方案--------------------
SQL code
update  table1 set Speet=case left(TrianName,1) when 't' then Speet*(1.25)
when 'z' then Speet*(1.25)
else Speet
end