gpt4 book ai didi

java - 使用 SQLite 进行简单的数学计算 - Android

转载 作者:行者123 更新时间:2023-11-29 09:36:59 25 4
gpt4 key购买 nike

我是 SQL 的新手,我正尝试在 Android 应用程序中使用简单的数学运算进行查询。这就是我正在尝试做的 -

我有一个名为 allfoods 的表,其中包含名为“卡路里”和“大小”的列。这是查询-

int tempCalories = 100;
int maxCalories = 300;
Cursor dataFoods = myDataBase.rawQuery("SELECT id FROM allfoods WHERE size <> 0 AND (" + tempCalories + " + (calories * (size / 100)) < " + maxCalories +")" , null);

那行得通吗?我自己测试时遇到了一些问题,因为返回值变化太大。

谢谢!

最佳答案

你好托菲拉

,如果您在 (size / 100.0) 中将分母更改为 100.0,您的查询将有效.

但是,您的查询可能会返回 0,因为您的等式:

100 + (calories * (size / 100.0)) < 300

当大小和/或卡路里的值超出范围时将返回 false。

证明

为了测试您的查询,我创建了一个包含数据的表和一个测试 View 。

数据

为了测试一些东西,我创建了一个表,其中大小值的范围从 1 到 1000 以 1 为步长,卡路里的范围以 5 为步长从 5 到 5000,如下所示:

Id  |   size    |   calories
----------------------------
1 | 1 | 5
2 | 2 | 10
3 | 3 | 15
4 | 4 | 20
5 | 5 | 25

测试

为了测试您的等式,我创建了一个 View 来验证您的等式的每一步。

SQL

CREATE VIEW "test" AS 
SELECT id, size AS 'S', calories AS 'C',
size/100.0 AS 'S/100',
calories * (size/100.0) AS 'C*(S/100)',
100 + (calories * (size/100.0)) AS '100+(C*(S/100))',
CASE WHEN (300 > (100 + (calories * (size/100.0))))
THEN 'true' ELSE 'false' END AS 'Eq'
FROM allfoods;

结果

Id  |  S   |  C    |  S/100  |  C*(S/100)  |  100+(C*(S/100))  |  Eq
---------------------------------------------------------------------------
62 | 62 | 310 | 0.62 | 192.2 | 292.2 | true
63 | 63 | 315 | 0.63 | 198.45 | 298.45 | true
64 | 64 | 320 | 0.64 | 204.8 | 304.8 | false
65 | 65 | 325 | 0.65 | 211.25 | 311.25 | false
66 | 66 | 330 | 0.66 | 217.8 | 317.8 | false

结论

对我的测试数据运行查询将返回第 1 行到第 63 行。

关于java - 使用 SQLite 进行简单的数学计算 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com