我有一个数据库,我已经实现了searchView来搜索其数据 使用此查询:
选择:
//rooms.name = ? OR rooms.name LIKE ? OR rooms.name LIKE ? OR rooms.name LIKE ?
private static final String roomsWithSectorsByNameSelection =
DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_NAME + " = ? OR " +
DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_NAME + " LIKE ? OR " +
DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_NAME + " LIKE ? OR " +
DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_NAME + " LIKE ?";
表:
roomsWithSectorsByNameQueryBuilder.setTables(
DeltaContract.RoomsEntry.TABLE_NAME + " INNER JOIN " +
DeltaContract.SectorsEntry.TABLE_NAME +
" ON " + DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_SECTOR_ID + " = " +
DeltaContract.SectorsEntry.TABLE_NAME +
"." + DeltaContract.SectorsEntry._ID);
和查询:
private Cursor getRoomsWithSectorsByName(Uri uri, String[] projection, String sortOrder) {
String name = DeltaContract.RoomsEntry.getNameFromRoomsUri(uri);
return roomsWithSectorsByNameQueryBuilder.query(deltaDbHelper.getReadableDatabase(),
projection,
roomsWithSectorsByNameSelection,
new String[]{name, (name + "%"), ("%" + name + "%"), ("%" + name)},
DeltaContract.SectorsEntry.TABLE_NAME + "." + DeltaContract.SectorsEntry.COLUMN_NAME,
null,
sortOrder
);
}
对于大多数搜索,我尝试它的工作非常出色,但对于某些行,即使我输入整个单词也不起作用
BUT
如果我将选择更改为:
//rooms.name = ?
private static final String roomsWithSectorsByNameSelection =
DeltaContract.RoomsEntry.TABLE_NAME +
"." + DeltaContract.RoomsEntry.COLUMN_NAME + " = ?";
以及对此的查询:
private Cursor getRoomsWithSectorsByName(Uri uri, String[] projection, String sortOrder) {
String name = DeltaContract.RoomsEntry.getNameFromRoomsUri(uri);
return roomsWithSectorsByNameQueryBuilder.query(deltaDbHelper.getReadableDatabase(),
projection,
roomsWithSectorsByNameSelection,
new String[]{name},
DeltaContract.SectorsEntry.TABLE_NAME + "." + DeltaContract.SectorsEntry.COLUMN_NAME,
null,
sortOrder
);
}
删除所有喜欢,它工作正常,
应该注意的是,如果我使用不同的列搜索表,则第一个查询无法找到,它会起作用并返回行
还应注意,行中的数据存储在阿拉伯语中
所以请帮忙吗?谢谢
修改
例如: 在第一个状态下使用所有喜欢的查询,当我搜索第一行中显示的“رئيسمجلسالإدارة”时:
(图片编号一)
按名称搜索它只会获得类似的行:
(图片二)
但是当我按电话号码搜索时,它会找到它:
(图片编号三)
即使我用阿拉伯语写下电话号码:
(图片编号四)
这里是图像(由于声誉低造成的限制,将它们放在一个链接中)
现在,当我更改查询并删除所有喜欢时,它只是找到它:
还应该注意的是,问题不仅限于此行,它确实发生在其他行也遵循相同的行为
答案 0 :(得分:0)
解决了它,
问题发生的原因是查询中的group by参数, 我不知道为什么它会导致问题,但删除它只是解决了它所以我很高兴