一个列车表有字段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]
------解决方案--------------------
------解决方案--------------------
用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