当我们使用Web服务时,在十进制字段中使用特殊字符,而在插入SQL Server时,我们需要进行强制转换为十进制,这将产生以下错误。
我试图避免在SQL中添加特殊条件以避免特殊字符的特殊字符。下面提供了我尝试过的代码。
select @StringVal = (case when @StringVal like '%[^0-9.]%' then '0'
when @StringVal like '%.%.%' then '0'
else @StringVal
end)
CAST(@StringVal AS decimal(18,4))
字符串或二进制数据将被截断。
答案 0 :(得分:0)
我建议使用try_convert()
一步来做到这一点:
select coalesce(try_convert(decimal(18, 4), @StringVal), 0)
如果无法将值转换为小数,则 try_convert()
返回NULL
。在这种情况下,您似乎要使用0
。