根据列的当前值更新表中的列值

时间:2019-09-13 05:31:04

标签: sql sql-server

我有一个名为“客户”的表,并且有一个名为“余额”的列。如果客户的余额以“ 00”结尾,例如3000,则在其他情况下(例如1333)应将其更新为30.00,不应更改该值。

通过使用

,我已经能够将1333的值更改为3000
SELECT Balance
from dbo.Customers
where SUBSTRING(REVERSE(Balance),1,2) = '00'

但是在任何地方都找不到如何将找到的值(例如3000、6000、9000)转换为30.00、60.00和90.00

编辑1 在更新时,让我像30.00这样的'.00'是很重要的,不能进行30、60、90 余额列的数据类型为NVARCHAR(MAX)

2 个答案:

答案 0 :(得分:1)

right(Balance, 2) = '00'检查所需条件

执行除法Balance / 100,然后转换为decimal(20,2),然后再次转换为varchar

select  Balance,
        case    when    right(Balance, 2) = '00'
        then    convert(varchar(20), convert(decimal(20,2), Balance / 100))
        else    Balance
        end
from    Customer

答案 1 :(得分:0)

这是您的更新脚本。

Update Customers set Balance =  
cast(cast(cast(Balance as decimal)/100.00 as numeric(36,2)) as nvarchar(max)) 
Where (cast(Balance as decimal)%10.00) = 0