gpt4 book ai didi

android - 大于运算符 (>) 未从数据库中给出正确的结果

转载 作者:行者123 更新时间:2023-11-29 23:04:40 25 4
gpt4 key购买 nike

我已经将 文本类型列 命名为“amountDesc”,其中包含一些值。我想获取所有大于 100 的值。我写了一个查询,但没有给出正确的结果。

数据库如下所示。 enter image description here

我试过这段代码:

String query = "SELECT amountDesc FROM increment WHERE amountDesc > 100";

Cursor rawQuery = getReadableDatabase().rawQuery(query, null);
if (rawQuery.moveToFirst()) {
while (!rawQuery.isAfterLast()) {
String value = rawQuery.getString(rawQuery.getColumnIndex("amountDesc"));

rawQuery.moveToNext();
Log.d("tvlateamoutn1", value);
}
}

并在 Logcat 上获取这些值:

500 50 200 50

如您所见,它的值不正确,因为我需要 > 100 个值。我知道这是针对大多数初学者的问题,但我坚持了下来。请解决。

最佳答案

I've text type column named 'amountDesc' having some values in it.

所以在你的表定义中你有 amountDesc TEXT 或类似的东西?

来自 the documentation :

A column with TEXT affinity stores all data using storage classes NULL, TEXT or BLOB. If numerical data is inserted into a column with TEXT affinity it is converted into text form before being stored.

and :

If one operand has TEXT affinity and the other has no affinity, then TEXT affinity is applied to the other operand.

由于该列具有文本关联性,因此其他操作数正在从整数 100 转换为字符串 '100'。字符串 '50' 大于字符串 '100' 因为 '5' 大于 '1'。因此,您的查询返回的正是您要求它返回的内容。您只是在问一些与您认为不同的事情。

如果您想将该列中的值视为整数并相应地比较它们,请在创建表时使用 INTEGER 而不是 TEXT。没有为存储在列中的数据选择正确亲和性的一个糟糕的解决方法是在计算中使用它们时将值转换为适当的类型...... CAST(amountDesc AS INTEGER) > 100 或其他东西就像那样。

(阅读和理解关于数据类型和亲和性的链接文档对于有效使用 sqlite 必不可少。)

关于android - 大于运算符 (>) 未从数据库中给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684124/

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