忽略房间中的子句

问题描述

我想查询一个表,但是如果它等于某个值,我想忽略WHERE子句:这是我的代码

@Query("SELECT * FROM content WHERE seen :seen")
public abstract List<content> getContent(String seen);

如果它等于“ False”,我想忽略where子句“ seen”。

我尝试过使用seen = "seen",与column = column类似,但是没有用,但是在sqlite数据库浏览器中也可以使用。

请帮助

解决方法

尝试以下方法之一(您的问题可能会以不同的方式解释):

选项1 。如果方法的参数seen为'False',则忽略“ WHERE”子句

@Query("SELECT * FROM content WHERE seen =:seen OR :seen = 'False'")
public abstract List<content> getContent(String seen);

选项2 。对于字段seen为“ False”的表行,忽略“ WHERE”子句

@Query("SELECT * FROM content WHERE seen =:seen OR seen = 'False'")
public abstract List<content> getContent(String seen);
,

如果我能很好地理解您,那么您需要获取除等于False以外的所有列表,然后可以使用!=运算符

@Query("SELECT * FROM content WHERE seen :seen AND seen != 'False'")
public abstract List<content> getContent(String seen);

或者您可以将False作为方法参数传递

@Query("SELECT * FROM content WHERE seen :seen AND seen != :exclude")
public abstract List<content> getContent(String seen,String exclude);

但是我怀疑您的意思是如果要传入的String等于WHERE,则要排除整个False子句,可以像下面这样以编程方式完成

在存储库中:

public void getContent(String seen) {
    if (seen.equals("False"))
        mDao.getContent();
    else 
        mDao.getContent(seen);
}

在没有参数的Dao中实现getContent()

@Query("SELECT * FROM content")
public abstract List<content> getContent();

注意:您必须处理存储库中的列表侦听器