当前位置: 首页 > 面试题库 >

Room:我可以检查传递的值以查询NULL吗?

徐德海
2023-03-14
问题内容

我正在使用Room库,具有DB Station,并想执行查询以获取具有/不具有过滤器的Station。

UPD。我有DAO,我想在我的数组(groupIds)为null或为空时获取所有记录,并且如果我在数组中有一个元素,则要获取过滤列表。

@Query("SELECT * FROM $STATIONS_TABLE_NAME WHERE ((:groupIds) IS NULL OR $GROUP_ID IN(:groupIds))
fun getStationsWithFilter(groupIds: IntArray?): Flowable<List<DbStation>>

这时我遇到了一个问题

08-29 16:09:00.139 9508-9508/->BaseActivity: showError: exception - near ",": syntax error (code 1): , while compiling: SELECT * FROM Stations WHERE ((?,?,?,?,?,?,?,?,?,?) IS NOT NULL

所以,

1)我可以检查要查询的null传递值并动态更改SQL查询吗?

2)如果是,我有什么语法问题?


问题答案:

交易是在SQL查询的这一部分中

WHERE ((:groupIds) IS NULL

groupIds- 是一个数组,我在那个地方有一个语法异常

我的变通方法:我开始传递2个参数来查询而不是1个,第一个-字符串作为Nullable标志(我认为它可能是直接布尔值),第二个-第二个子句的Int数组。

@Query("SELECT * FROM $STATIONS_TABLE_NAME WHERE :nullableFlag IS NULL OR $GROUP_ID IN (:groupIds))
fun getStationsWithFilter(nullableFlag: String?, groupIds: IntArray?): Flowable<List<DbStation>>


 类似资料:
  • 我怀疑我的SQL。 请找到查询 输出显示properly.currently我得到firstname和lastname。但对于某些条目,名和姓为空。我需要修改查询,以便我可以打印列的非空值if(last_id!=0和date(活动)=date(start_date),CONCAT(ag.firstname ,' ‘, ag.lastname ) ,’') 相同的查询,不包括名和姓的空条目。我尝试了

  • 在一个日期列中有一个表,在同一个日期的不同时间有这么多总计的条目,但我不担心时间。我需要找到某些日期所有总额,随着用户名。当我使用下面的查询。它显示语法错误 选择用户名,总额,从账单日期='2013-04-12' 在上面的查询日期是列名,请帮我。

  • 本文向大家介绍我们可以在MySQL查询中使用SELECT NULL语句吗?,包括了我们可以在MySQL查询中使用SELECT NULL语句吗?的使用技巧和注意事项,需要的朋友参考一下 是的,我们可以在MySQL查询中使用SELECT NULL语句。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是实现SELECT NULL

  • 我已经检查了以下信标的规格: Eddystone协议规范 AltBeacon协议规范v1。0 ibeacon有效载荷 好吧,我们不能通过广告来获得信标的剩余电池。例如,我无法检查使用“松下CR2450电池”的Estimote eddystone是否有50%的电池电量。 这是真的吗?如果没有,我如何获得这些信息?

  • 问题内容: 我知道ObjectIds包含创建日期。有没有办法查询ObjectId的这一方面? 问题答案: 将时间戳弹出到ObjectId中将详细介绍基于嵌入在ObjectId中的日期的查询。 简要介绍一下JavaScript代码:

  • 问题内容: 我想找到列的2nd,3rd,… nth个最大值。 问题答案: 您可以将列排序为降序格式,然后仅从第n行获取值。 编辑:: 根据评论请求进行了更新。 警告 完全未经测试! 类似于上面的内容对于Oracle应该适用…您可能必须首先正确使用语法!