在 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 上转换表达式结果,从浮点数到十进制数的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中从浮点数转换为无符号字符

从浮点数转换为 QByteArray

C# 隐式运算符 MyType(int value) 自动“支持”从浮点数转换

C++11 自动。从浮点数转换为长整数

MySQL:无法更新 JSON 列以将值从浮点数转换为整数

将 pandas 数据框列标签从浮点数转换为整数