我在表格中存储了varchar数量。
尝试对它们求和时,它总是返回0.00。
以下是仅使用db中的一条记录的示例。
SELECT col1, SUM(CAST(col2 AS DECIMAL(20,2))) derived1
FROM table
WHERE col3 = 'FIT'
AND col1 = '6211195'
GROUP BY col1
返回一行,其值为0。 通过从查询中删除SUM和CAST,我可以看到它正在拉动它应该的值,但我无法求和或转换它,添加其中任何一个中断它并再次返回0。 我也尝试将字段转换为十进制类型,它只是将所有值都归零。
编辑:
嗯,我刚刚运行了一个REGEX查询来检测不是字母数字值或小数点的任何内容。似乎在我看不到的字段中有非ascii字符,弄乱了类型转换。随着我的了解,我会继续更新。
答案 0 :(得分:1)
显示col2
的一些示例值。真正是数字的字符串被视为数字。因此'1'
将成为1
。
但是,如果字符串不是以数字'-'
或'+'
(在前导空格之后)开头,那么它将是0
(在大多数情况下)。因此'A1'
将是0
。等等。和'$100'
一样。
课程是:如果列包含数字,请将它们存储为数字。真的很简单。