当前位置: 代码迷 >> Sql Server >> SQL 更新语句,会的麻烦进来帮忙下解决方法
  详细解决方案

SQL 更新语句,会的麻烦进来帮忙下解决方法

热度:94   发布时间:2016-04-27 13:46:06.0
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 Speetend
------解决方案--------------------

 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 [email protected]
if @Name='K'
update dbo.[Table1] set Speet='' where [email protected]
else if @Name='Z'
update dbo.[Table1] set Speet='' where [email protected] 

------解决方案--------------------
探讨
一个列车表有字段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 Speetend
  相关解决方案