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

标签 java android sql sqlite

我是 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/

相关文章:

android - Firebase UI AuthUI.getInstance() 抛出 NPE

Android TabLayout高度不随字体大小增加

mysql - 触发器中使用 If_Else 时出错

MySQL删除多个表中的多行

java - 搜索 url 中的字符串

java - 如何用 Java 打开 LMDB 数据库?

java - 在 Java 中反转数组

java - 在 Eclipse 中使用 Adob​​e Air 的证书

sql 使用 group by 不仅仅是一个表

java - 如何在我的第二个 Activity 中将图像上传到 Firebase 存储?