我有一个名为“客户”的表,并且有一个名为“余额”的列。如果客户的余额以“ 00”结尾,例如3000,则在其他情况下(例如1333)应将其更新为30.00,不应更改该值。
通过使用
,我已经能够将1333的值更改为3000SELECT 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)
答案 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