【问题标题】:Android sqlite - select records where field is null or emptyAndroid sqlite - 选择字段为空或为空的记录
【发布时间】:2012-05-05 19:06:44
【问题描述】:

我的应用程序有一个 sqlite DB,其中一些字段为 null 或空(这意味着我从未在该字段中插入任​​何内容)。

我希望选择字段为空或为空的所有记录。

这是我尝试过的:

cursor = db.query(DBHelper.TABLE_NAME, COLUMNS, "folder_name = ? ", new String[] {"null"}, null, null, DBHelper.TIMESTAMP_COL + " DESC");

但这没有用,我没有得到任何记录。我需要做什么才能完成这项工作?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    试试

    cursor = db.query(DBHelper.TABLE_NAME, COLUMNS, "folder_name is null or folder_name = ?", new String[] {""}, null, null, DBHelper.TIMESTAMP_COL + " DESC");
    

    【讨论】:

    • 所提供的答案都没有说明“folder_name = ”是否真的有必要或矫枉过正。你是唯一一个同时使用 IS NULL 和空字符串检查的人,所以你能解释一下为什么要进行双重检查(或者它是否是预防性的)?
    • 问题是如何选择folder_namenull或为空的记录。我假设emptyempty string 的缩写。如果我错了,我仍然会建议进行预防性空字符串检查。
    【解决方案2】:
    db.rawQuery("SELECT * FROM myTable WHERE myColumn IS NULL", null);
    

    【讨论】:

      【解决方案3】:

      只需使用“文件夹名称为空”

      【讨论】:

      • 您应该在回答中提供更多详细信息。这假设 OP 理解你的意思。考虑添加一个示例以使您的答案质量更高。
      【解决方案4】:

      我正在使用 android studio 3.4, 房间 2.1.0-alpha07

      这是我的 Kotlin 代码
      我尝试使用它并没有按预期工作

      `@Query("SELECT *FROM notifications WHERE status=:status OR status = null")`   
      

      这个很好用

      @Query("SELECT *FROM notifications WHERE status=:status OR status is null")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2011-04-06
        • 2013-10-20
        • 2019-05-26
        相关资源
        最近更新 更多