字符串或二进制数据将被截断-强制转换为十进制(18,4)

时间:2020-07-20 14:20:20

标签: sql sql-server

当我们使用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))

字符串或二进制数据将被截断。

1 个答案:

答案 0 :(得分:0)

我建议使用try_convert()一步来做到这一点:

select coalesce(try_convert(decimal(18, 4), @StringVal), 0)
如果无法将值转换为小数,则

try_convert()返回NULL。在这种情况下,您似乎要使用0