sqlite запрос для поиска в базе данных с несколькими ключевыми словами - PullRequest
0 голосов
/ 24 сентября 2018

Я использовал код, подобный следующему коду, для поиска имени человека в базе данных:

cursor.query(select column from Table where column_person_Name="John");

Но теперь я хочу искать имена нескольких человек вместе, как это сделать?

Ответы [ 5 ]

0 голосов
/ 07 апреля 2019

Комната поддерживает Коллекции в качестве аргумента запроса.

Запрос в номере выглядит так:

@Query("SELECT first_name, last_name FROM user WHERE region IN (:regions)")
public List<NameTuple> loadUsersFromRegions(List<String> regions);

Проверьте официальные руководства.

0 голосов
/ 24 сентября 2018

Способ сделать это с помощью SQlite будет использовать IN:

SELECT * FROM persons WHERE name IN ("John", "Doe");

В Java, имея массив строк, вы можете сделать это так:

final String[] namesArray = {"John", "Doe"};

// Pad the Strings with quotes: John -> 'John'
for (int i = 0; i < namesArray.length; i++) {
    namesArray[i] = "'" + namesArray[i] + "'";
}

// Join the Strings: 'John', 'Doe'
final String names = TextUtils.join(",", namesArray);
final String query = "SELECT * FROM persons WHERE name IN ("+names+")";

Это приводит к:

SELECT * FROM persons WHERE name IN ('John','Doe')
0 голосов
/ 24 сентября 2018

Вы можете использовать IN условие

SELECT *
FROM Table
WHERE column_person_Name IN ('Name1', 'Name2', 'Name3');
0 голосов
/ 24 сентября 2018

Другим решением вашей проблемы может быть использование like Ключевого слова, где вы получаете несколько результатов на основе search.

Подобный используется для частичных известных данных приложения.

 SELECT
   column_list
FROM
   table_name
WHERE
  column_1 LIKE %yoursearch_word%;
0 голосов
/ 24 сентября 2018

Используя оператор ИЛИ;

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

здесь пример;

cursor.rawQuery("select column from Table where column_person_Name='John' OR column_person_Name='Bob');
...