select t.totalprice*(select cast(s.value as decimal(3,2)) from sys_param s where s.name='积分') as info from trade_info t
在做查询乘法运算的时候,碰到了varchar跟int相乘变成字符串拼接的问题,
通过cast(value as type),将varchar转为decimal解决了此问题
select t.totalprice*(select cast(s.value as decimal(3,2)) from sys_param s where s.name='积分') as info from trade_info t在做查询乘法运算的时候,碰到了varchar跟int相乘变成字符串拼接的问题,通过cast(value as type),将varchar转为
一般情况下,sqlserver会自动完成数据
转
换。但这种
转
换有时候很容易出错,尤其是n
varchar
转
换为numeric时。如果能够明确数据类型,最好显式
转
换。
举个我遇到的例子,
SELECT * FROM ITEM_INFO_TEST WHERE OBJECT_NO=’2’ AND COL530<5000.00
//COL530在数据库中类型为n
varchar
(30),实际查询的时候值为4
varchar
(200)
转
换为
decimal
保留3位小数
sum(cast(main.ext_field_01 as
decimal
(18,3)) ) ext_field_01
select sum(cast(t.ext_field_01 as
decimal
(18,3)) ) ext_field_01 ...