SQLite" LIKE"语法没有带来任何结果

时间:2015-01-31 22:32:46

标签: java android sql sqlite

我尝试使用以下查询从sqliteDB中读取:

public ArrayList<ReminderNote> getAllRegexItems(String author) {
 ArrayList<ReminderNote> results = new ArrayList<>();

    Cursor cursor = this.getReadableDatabase().query(
            REMINDER_NOTE_TABLE,
            new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR}, Strings.isEmpty(author) ? null : KEY_AUTHOR + " = ?",
            Strings.isEmpty(author) ? null : new String[]{"%" + author + "%"}, null, null, null);

可以像我一样使用%吗?

如果author为null或为空,我希望获取所有结果。

不幸的是,即使我事先添加了这样的实体,我也会得到空结果。

我执行时可以看到非空结果集:

Cursor cursor = this.getReadableDatabase().query(
            REMINDER_NOTE_TABLE,
            new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR}, null, null, null, null, null);

1 个答案:

答案 0 :(得分:0)

您使用的是KEY_AUTHOR + " = ?",您应该使用KEY_AUTHOR + " LIKE ?"

Cursor cursor = this.getReadableDatabase().query(
        REMINDER_NOTE_TABLE,
        new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR},
        Strings.isEmpty(author) ? null : KEY_AUTHOR + " LIKE ?",
        Strings.isEmpty(author) ? null : new String[]{"%" + author + "%"},
        null, null, null);