【发布时间】:2021-08-14 09:32:26
【问题描述】:
我有一列(附在下面),其中包含我需要对所有值求和的字母数字值。
Percentage
----------
50.6687 percent
36.0178 percent
33.1196 percent
29.7688 percent
7.6338 percent
97.1024 percent
40.7949 percent
161.56 percent
我尝试了这段代码,但最终出现错误
SUM(CAST(S.FIELD_PERCENTAGE AS FLOAT)) OVER() [Sum of PERCENTAGE]
错误是
消息 8114,第 16 级,状态 5,第 8 行
将数据类型 nvarchar 转换为浮点数时出错。
我怎样才能达到这个预期的结果:
Percentage Sum of Percentage
---------- ----------------
50.6687 percent 456.666
36.0178 percent 456.666
33.1196 percent 456.666
29.7688 percent 456.666
7.6338 percent 456.666
97.1024 percent 456.666
40.7949 percent 456.666
161.56 percent 456.666
【问题讨论】:
-
50.6687 percent不是一个有效的数字,所以为了用它计算,试试TRIM(REPLACE(S.FIELD_PERCENTAGE, 'percent', '')) -
修复您的设计,停止将数值数据存储为字符串数据类型。
-
我强烈建议不要将浮点数用于百分比值。浮点数用于科学值,因此不能准确存储所有数字。
标签: sql sql-server tsql sql-server-2008