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,失败的小数
答
除了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分支
你为什么选择浮动tblproducts
,而不是十进制?我只是好奇/试图学习:) – JNK 2010-09-24 20:11:20
@JNK:因为它更宽容,然后小数。我们不知道精确度或缩放比例,空字符串将浮动为零,float接受像5E-02这样的东西... – gbn 2010-09-24 20:14:32