【发布时间】:2019-02-16 03:09:30
【问题描述】:
我的 Android 应用需要此解决方案,该应用使用 Room 库来持久化数据。我需要实现一个解决方案,其中用户传递字符串值列表,将其与表中的数据进行比较,然后返回匹配和不匹配的结果。
因此,从某种意义上说,我希望返回用户给出的所有字符串值,无论它们是否与表值匹配。然而,匹配的值将有更多来自表的数据,而不匹配的值将只是值。
例如,我有一个 tasks 表,其中包含 task_id、task_title、task_status 列。该表有以下数据:
1, '任务 1', '进行中'
2,“任务 2”,“暂停”
3, '任务 3', '已完成'
4, '任务 4', '进行中'
现在用户传递一个值列表,以查看是否有任何数据可用于这些值。如果有匹配,他们希望看到该任务的状态。
该列表以String[] 的形式传递,可以包含任意值和任意数量的值。让我们假设字符串数组如下:
{'Task 2', 'Task 3', 'Task 5'}
需要什么样的查询才能返回以下结果:
“任务 2”、“暂停”
'任务 3','已完成'
“任务 5”,不可用(或任何其他消息或没有消息)
所以,我需要通过返回的字符串数组传递所有值,其中包含匹配的数据和不匹配的数据(或消息)。
我已经尝试过以下形式的查询:
@Query("SELECT task_title, task_status FROM tasks WHERE task_title IN (:values)")
LiveData<List<Task>> getTasks(String[] values);
它会按照上面的例子返回以下内容:
“任务 2”、“暂停”
'任务 3','已完成'
它不会返回实际需要返回的不匹配值'Task 5'。
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: android sqlite android-room