在 SQLite 上转换表达式结果,从浮点数到十进制数
Posted
技术标签:
【中文标题】在 SQLite 上转换表达式结果,从浮点数到十进制数【英文标题】:Casting a expression result on SQLite, from float to decimal 【发布时间】:2011-06-13 11:30:43 【问题描述】:我使用 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 或更多结果)。
【问题讨论】:
对不起,这是一个愚蠢的问题。我终于伪记住了(在文档上找到) ROUND() 函数。这解决了我的问题。 【参考方案1】:在 SQLite 中,类型名称后面的括号中的数字不做任何事情;它们只是被允许与其他数据库兼容。 VARCHAR(100)
仅表示“文本关联”,DECIMAL(10, 2)
仅表示“数字关联”。
【讨论】:
感谢您的澄清。对于其他用户:答案在第一条评论上。【参考方案2】:ROUND() 函数可以解决问题。
ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight
【讨论】:
以上是关于在 SQLite 上转换表达式结果,从浮点数到十进制数的主要内容,如果未能解决你的问题,请参考以下文章