在 SQLite 上转换表达式结果,从浮点数到十进制数

Die*_*ego 3 c# sql sqlite casting

我在使用 SQLite.NET 对 SQLite 数据库运行的查询上有以下表达式。

SUM(Detail.Qty * Products.Weight) AS MovedWeight
Run Code Online (Sandbox Code Playgroud)

查询有效,但由于 Detail.Qty 是十进制,而 Weight 也是十进制,它返回一个浮点数。我正在尝试将其转换为 DECIMAL(10,2) 之类的内容。我知道 SQLite 对数据类型很特别,我确实尝试使用 CAST 但没有成功。

CAST(SUM(Detail.Qty * Products.Weight) AS DECIMAL(10,2)) AS MovedWeight
Run Code Online (Sandbox Code Playgroud)

它也可以工作,但没有注意精度 (10,2),并给我与第一个示例相同的结果。

有人有想法吗?在 DataTable 中将结果转换为十进制也是可以接受的,但我不知道如何在没有丑陋、消耗资源的循环的情况下做到这一点(预计查询在某个时候将返回 3000 或更多结果)。

dan*_*n04 5

在SQLite的,在类型名后不括号内的数字任何事情; 它们只是为了与其他数据库兼容。 VARCHAR(100)无非是“文本亲和力”,DECIMAL(10, 2)无非是“数字亲和力”。

  • 感谢您的澄清。对于其他用户:答案在第一条评论上。 (2认同)

Die*_*ego 5

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

ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight
Run Code Online (Sandbox Code Playgroud)