sql - 将逗号分隔的 varchar 转换为十进制

标签 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 转换为数字时出错。”。

我怎么能总结这个领域?

最佳答案

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

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

但是,我可以看到由此产生的任何复杂性(多个逗号、无逗号、嵌入空格等),因此请密切关注它。

关于sql - 将逗号分隔的 varchar 转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884054/

相关文章:

MySQL varchar大小存储——一字节、二字节转换

mysql - 有任何理由使用 TINYTEXT 吗?

sql - 我将如何批量更新日期和时间?

sql - 哪种 Sql Server 列类型用于视频中的位置?

mysql - SQL 在数据库中搜索数字/货币值

asp.net-mvc-3 - mvc3小数四舍五入2位

c# - 比 decimal.Parse 更快的替代方法

sql - Varchar(255) 到 Varchar(MAX)

sql - 出错时从存储过程返回值

sql - 将datetime2数据类型转换为datetime数据类型导致超出范围?