在SQLite上转换表达式结果,从float到decimal

时间:2011-01-21 23:02:52

标签: c# sql sqlite casting

对于使用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或更多结果)。

2 个答案:

答案 0 :(得分:4)

在SQLite中,类型名称后的括号中的数字不执行任何内容;他们只是被允许与其他数据库兼容。 VARCHAR(100)仅仅意味着“文字亲和力”,DECIMAL(10, 2)仅仅意味着“数字亲和力”。

答案 1 :(得分:1)

ROUND()函数可以解决问题。

ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight