我有一个sql Server数据库.
一个字段有值
ID VALUE 1 NEGATIF 2 11.4 3 0.2 4 A RH(+) 5 ----- 6 >>>>> 7 5.6< 8 -13.9
我要将CONVERT VALUE字段转换为十进制,当然可以转换字段.
解决方法
平原ISNUMERIC是垃圾
>空字符串,– 和.都是有效的
>那就是等等
> 1e-3对于float而不是十进制有效(除非你将CAST漂浮到十进制)
对于一个特别隐蔽但是故障的解决方案,请附加e0或.0e0,然后使用ISNUMERIC
SELECT ISNUMERIC(MyCOl + 'e0') --decimal check,ISNUMERIC(MyCOl + '.0e0') --integer check
所以
SELECT ID,VALUE,CAST( CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END AS decimal(38,10) ) AS ConvertedVALUE FROM Mytable