【问题标题】:Converting a comma-separated varchar to decimal将逗号分隔的 varchar 转换为十进制
【发布时间】:2014-03-19 23:51:23
【问题描述】:

我在数据库中有一个列,例如;

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

我怎样才能对这个字段求和?

【问题讨论】:

    标签: sql decimal varchar comma


    【解决方案1】:
    cast(replace(new_profitt1, ',', '') as decimal(18,2))
    

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

    例如

    old_col -> new_col

    1,951.13 -> 1951.13

    【讨论】:

      【解决方案2】:

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

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

      但是,我可以看到任何数量的并发症(多个逗号、没有逗号、嵌入的空格等),因此请密切注意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-28
        • 2015-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多