SQLite "LIKE" 语法没有带来任何结果
SQLite "LIKE" syntax didn't bring any results
我尝试使用以下查询从 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);
您正在使用 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);
我尝试使用以下查询从 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);
您正在使用 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);