Почему при использовании selectionArgs меняется результат, вот два аналогичных запроса:
rawQuery("SELECT 2 < 1", null); // результат: 0
rawQuery("SELECT 2 < ?", new String[]{"1"}); // результат: 1
Вот пример кода:
Cursor cursor = bd.rawQuery("SELECT 2 < 1", null);
if (cursor.moveToFirst()) {
String value = cursor.getString(0);
Log.d("test", "Query 1: " + value);
}
cursor.close();
Cursor cursor1 = bd.rawQuery("SELECT 2 < ?", new String[]{"1"});
if (cursor1.moveToFirst()) {
String value = cursor1.getString(0);
Log.d("test", "Query 2: " + value);
}
cursor1.close();
Ответ
Не работаю с Андроидом, но погуглив документацию, нашёл что
The values will be bound as Strings.
Как можно удостовериться, SELECT 2 < '1' выдаёт 1. Опять же, не знаю, насколько это правильно, но вы можете использовать CAST
SELECT 2 < CAST(? AS INTEGER)
Комментариев нет:
Отправить комментарий