如何在 Android 上查询 ContentProvider 的非空值?

How to query a ContentProvider for value that is not null on Android?

我有一个 ContentProvider,我想查询 returns table 的行,其中特定列的值不为空。在 SQL 中,您可以使用 column IS NOT NULL,但我无法弄清楚 ContentProviders 的等效语句是什么。

到目前为止我已经尝试过:

  1. SQL 类似语法。

    getContentProvider().query(uri,
            null,
            Contract.Table.COLUMN + " is not null",
            null,
            null);
    
  2. SQL 类似于带有选择参数的语法。

    getContentProvider().query(uri,
            null,
            Contract.Table.COLUMN + " is not null",
            new String[0],
            null);
    
  3. 等于实际null值。

    getContentProvider().query(uri,
            null,
            Contract.Table.COLUMN + " != ?",
            new String[]{null},
            null);
    
  4. 不等于"null"字符串。

    getContentProvider().query(uri,
            null,
            Contract.Table.COLUMN + " != ?",
            new String[]{"null"},
            null);
    

谢谢!

ContentProvider不规范。它们中的每一个都可以以任何给定的方式解释查询参数。 (事实上​​ ,大多数内容提供者根本只使用几个参数。)