一尘不染

SQL查询将nvarchar转换为int

sql

我必须使用聚合函数查询一列的总数。列数据类型为NVARCHAR(MAX)。如何将其转换为Integer?

我已经试过了:

  SELECT SUM(CAST(amount AS INT)),
         branch 
    FROM tblproducts  
   WHERE id = 4
GROUP BY branch

…但是我得到了:

将nvarchar值“ 3600.00”转换为数据类型int时,转换失败。


阅读 123

收藏
2021-03-17

共1个答案

一尘不染

3600.00不是整数,因此先通过浮点数进行CAST

sum(CAST(CAST(amount AS float) AS INT))

编辑:

为什么要漂浮?

  • 不知道所有行的精确度或范围:浮动可能是次要的邪恶
  • 空字符串将浮点为零,十进制失败
  • float接受5E-02之类的东西,十进制失败
2021-03-17