对于使用SQLite.NET对SQLite数据库运行的查询,我有以下表达式。
SUM(Detail.Qty * Products.Weight) AS MovedWeight
查询有效,但由于Detail.Qty是十进制,而Weight也是十进制,它返回一个浮点数。我试图把它变成像DECIMAL(10,2)这样的东西。 我知道SQLite对于数据类型是特别的,我确实尝试使用没有成功的CAST。
CAST(SUM(Detail.Qty * Products.Weight) AS DECIMAL(10,2)) AS MovedWeight
它也有效,但没有注意到精度(10,2),并给出了与第一个例子相同的结果。
有人有想法吗?在DataTable中将结果转换为十进制也是可以接受的,但我不知道如何在没有丑陋,耗费资源的循环的情况下做到这一点(预计查询在某些时候会返回3000或更多结果)。
答案 0 :(得分:4)
在SQLite中,类型名称后的括号中的数字不执行任何内容;他们只是被允许与其他数据库兼容。 VARCHAR(100)
仅仅意味着“文字亲和力”,DECIMAL(10, 2)
仅仅意味着“数字亲和力”。
答案 1 :(得分:1)
ROUND()函数可以解决问题。
ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight