首页 > 解决方案 > 将数据类型 nvarchar 转换为数值时出错。尝试转换和替换

问题描述

我正在尝试使用代码添加我的预测总和

select 
    sum(cast(replace(replace(ZFREEGOOD, ',', ''), ' ', '') as decimal(22,8))) 
from 
    TEMP_GBR_History_1611

我不断收到错误

将数据类型 nvarchar 转换为数值时出错。

我使用 case 语句来确定哪些行失败。这些是其中一些

对获得解决方案有很大帮助

在此处输入图像描述

标签: sql-serversqldatatypesalgebraic-data-types

解决方案


一种选择是使用try_convert(money,...) 它往往更宽容一点。

例子

Select AsMoney = try_convert(money,' 27,300')   -- works!
      ,AsInt   = try_convert(int,' 27,300')
      ,AsDec   = try_convert(decimal(10,2),' 27,300')
      ,AsFloat = try_convert(float,' 27,300')

退货

AsMoney     AsInt   AsDec   AsFloat
27300.00    NULL    NULL    NULL

推荐阅读