将数据类型varchar转换为数字的问题。最好的方法?

时间:2017-12-01 19:55:21

标签: sql sql-server sql-server-2008-r2

我正在尝试转换进入​​插入的一个值。我在将数据类型varchar转换为numeric时遇到错误。我怎么能进一步证明这一点呢?我最好使用演员吗?我对此有点新意,所以我知道谁是最好的方法。

这是

CONVERT(DECIMAL(10, 3), 
        AVG(CASE R.ITEM 
               WHEN 'KD_ITEM' THEN CONVERT(DECIMAL(10, 3), R.RN2) * 100.00 
               ELSE NULL 
            END)) AS [KD_ITEMAVG]

它失败了,错误是:

  

将数据类型varchar转换为数字时出错。

2 个答案:

答案 0 :(得分:0)

CAST()CONVERT()做同样的事情,除了CONVERT()有一个可选的第三个参数。

如果您的数据可能无效,请使用TRY_CONVERT()代替CONVERT()

TRY_CONVERT(DECIMAL(10,3),
            AVG(CASE R.ITEM WHEN 'KD_ITEM' THEN TRY_CONVERT(DECIMAL(10,3), R.RN2)*100.00 
                END)
           ) AS [KD_ITEMAVG]

答案 1 :(得分:0)

您可以使用TRY_CONVERT(SQL Server 2012及更高版本):

TRY_CONVERT(DECIMAL(10,3),
            AVG(CASE R.ITEM WHEN 'KD_ITEM' 
                THEN TRY_CONVERT(DECIMAL(10,3),R.RN2)*100.00 
                ELSE NULL END))
AS [KD_ITEMAVG]