将逗号分隔的varchar转换为decimal

时间:2014-02-19 14:53:20

标签: sql decimal varchar comma

我在数据库中有一个列;

new_profittl
------------
45,1000
84,0400
156,6500
169,1800
...

我的代码;

SELECT SUM(CAST(new_profittl as DECIMAL(18,2)))
FROM new_hotelreservation AS R
WHERE DATEADD(hour, DATEDIFF(hour, getUTCdate(), GETDATE()),R.new_salesdate)
      BETWEEN @bas AND @bit AND R.statecode=0

我必须总结这个领域。该字段是NVARCHAR并用逗号分隔,而不是点。所以我无法总结这个领域。我试图转换或转换为十进制,但它没有。它给出了错误'将数据类型nvarchar转换为数字时出错。'。

我怎么能总结这个字段?

2 个答案:

答案 0 :(得分:7)

在短期内,这应该可以解决问题:

sum(cast(replace(new_profitt1, ',', '.') as decimal(18,2)))

但是,我可以看到任意数量的复制品(多个逗号,没有逗号,嵌入空格等等),所以要留意它。

答案 1 :(得分:0)

cast(replace(new_profitt1, ',', '') as decimal(18,2))

上面的代码可以完美地将包含逗号的varchar字段转换为十进制。

例如

old_col-> new_col

1,951.13-> 1951.13