使用 LIKE 的查询在 GreenDAO 时不起作用



>我有一个表,其中一列是一个包含三个字符的字符串,每个字符都有一个值 0 或 1。我想根据情况选择这些行。

我想执行这样的查询:

SELECT * FROM Item WHERE group_type LIKE ?

? 可以是 100 或 101 或 011 或 111 或 001。三个字符中 0 和 1 的组合。

我正在尝试使用 LIKE 进行查询

WhereCondition where = null;
switch (condition) {
    case case1:
        where = ItemDao.Properties.GroupType.like("1%");
        break;
    case case2:
        where = ItemDao.Properties.GroupType.like("%1%");
        break;
    case case3:
        where = ItemDao.Properties.GroupType.like("%1");
        break;
}
List<Item> items = itemDao.queryBuilder().where(where).list();

case1 按预期返回以 1 开头的所有内容。case3 按预期返回以 1 结尾的所有内容。案例 2 正在返回所有内容!它不会在开头、中间或结尾处测量值。它正在返回一切。

案例

1 和案例 3 工作正常。但是,案例 2 不起作用。这有什么问题吗?

No."%1%"应该返回出现"1"的所有内容。它可以是"100"、"010"或"101",但不能是"000"。

从 sqlite like 子句参考页面:

百分号表示零个、一个或多个数字或字符。下划线表示单个数字或字符。这些符号可以组合使用。

通过说%1%您正在搜索至少有一个数字 1 的元素,无论它在哪里。这主要是因为 % 表示零、一次或多次出现。以下示例在该链接中对此进行了进一步解释:

其中工资像"%200%"

查找任何位置有 200 的任何值

因此,我们可以看到您确实得到了预期的行为。

相关内容

  • 没有找到相关文章

最新更新