表T中有字段A integer 字段B varchar(64)
A B
1 0.1
2 1
3 null
4 1.5
5 空
6 0.15
结果要求把B转成数值numeric(18,2),null和空的全部为0,一条语句
我以为用
select a,cast(isnull((case when b='' then 0 else b end),0) as numeric(18,2)) from t
或是
select a,cast((case when b is null then 0 when b='' then 0 else b end) as numeric(18,2)) from t
能实现
但是结果却是实现不了。。。
求解。。。。。。。
------解决思路----------------------
select a,
显示=(case b
when null then 0
when '' then 0
else convert(decimal(5,5),b) end)
from t
------解决思路----------------------
SELECT A,要处理好显示转化和隐式转化
CASE WHEN ISNUMERIC(B)=1 THEN CAST(B AS NUMERIC(18,2)) ELSE 0 END
FROM t