Android 如何在查询中实现字符串数组?

Android 如何在查询中实现字符串数组?,android,sql,android-room,Android,Sql,Android Room,我想通过以下查询从我的房间数据库获取数据: @Query("SELECT address.address_id, first_name, last_name, street, postal_code, city," + "(SELECT employee.employee_id FROM employee WHERE employee.address_id = address.address_id) AS employee_id, " + "(SELECT project.project_i

我想通过以下查询从我的房间数据库获取数据:

  @Query("SELECT address.address_id, first_name, last_name, street, postal_code, city," +
"(SELECT employee.employee_id FROM employee WHERE employee.address_id = address.address_id) AS employee_id, " +
"(SELECT project.project_id FROM project WHERE project.address_id = address.address_id) AS project_id " +
"FROM address WHERE last_name IN (:pattern) OR first_name IN (:pattern) ORDER BY last_name ASC, first_name ASC") 
LiveData<List<AddressBookAddress>> loadAddressBookWithFilter(String... pattern);
如您所见,我的参数接受带有一个或多个搜索字符串的数组

让我们以max和muster为例


现在我想得到所有包含名字max或muster或姓氏max或muster的记录。但目前,我没有收到任何数据。

文档显示这是一件非常简单的事情。看看在这里,您可以看到以下示例:

作为SQLite绑定参数的扩展,Room支持将参数列表绑定到查询。在运行时,Room将根据方法参数中的项数构建正确的查询,使其具有匹配数量的绑定参数

@Query("SELECT * FROM user WHERE uid IN(:userIds)")
public abstract List findByIds(int[] userIds);
对于上面的示例,如果userid是一个由3个元素组成的数组,Room将以如下方式运行查询:SELECT*FROM user WHERE uid IN?并将userIds数组中的每个项绑定到语句中


所以,将签名从字符串更改为。。。字符串[]以清楚地表示数组存在。

文档将其显示为非常简单的事情。看看在这里,您可以看到以下示例:

作为SQLite绑定参数的扩展,Room支持将参数列表绑定到查询。在运行时,Room将根据方法参数中的项数构建正确的查询,使其具有匹配数量的绑定参数

@Query("SELECT * FROM user WHERE uid IN(:userIds)")
public abstract List findByIds(int[] userIds);
对于上面的示例,如果userid是一个由3个元素组成的数组,Room将以如下方式运行查询:SELECT*FROM user WHERE uid IN?并将userIds数组中的每个项绑定到语句中


所以,将签名从字符串更改为。。。要使用字符串[]来清楚地表示数组存在。

上没有kotlin的文档,但您可以使用此代码来进行相同的操作

 @Query("SELECT * FROM employee WHERE id IN(:idList)")
 fun getAllSelectedEmployee(idList:Array<String?>): List<Model>

上没有kotlin的文档,但您可以将此代码用于相同的文档

 @Query("SELECT * FROM employee WHERE id IN(:idList)")
 fun getAllSelectedEmployee(idList:Array<String?>): List<Model>