SQL查询将nvarchar转换为int

SQL查询将nvarchar转换为int

问题描述:

我必须使用聚合函数查询列的总量。列数据类型是NVARCHAR(MAX)。我如何将它转换为Integer?SQL查询将nvarchar转换为int

我已经试过这样:

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

...但我越来越:转换为nvarchar值 '3600.00' int数据类型时

转换失败。

为什么浮动:

3600.00不通过浮动第一

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

编辑整数投下?

  • 不知道的精度或者比例在所有行:浮动是两害取其轻也许
  • 空字符串会投射到零浮动,未能在小数
  • 浮动接受这样的东西5E-02,失败的小数
+0

你为什么选择浮动tblproducts
,而不是十进制?我只是好奇/试图学习:) – JNK 2010-09-24 20:11:20

+0

@JNK:因为它更宽容,然后小数。我们不知道精确度或缩放比例,空字符串将浮动为零,float接受像5E-02这样的东西... – gbn 2010-09-24 20:14:32

除了GBN的答案,你需要防止非数字的情况:

sum(CASE WHEN ISNUMERIC(Amount)=1 THEN CAST(CAST(amount AS float) AS INT)END) 

SELECT SUM(Try_Parse(使用 'EN-US')量智力), 分支 从那里ID = 4 GROUP BY分支