web-dev-qa-db-ja.com

Android列がnullでも空でもないSQLiteクエリ

.query呼び出しの構文を理解できません。 2番目の(異なる)列にnullまたは空の値がない特定の列に一致するすべてのレコードを選択する必要があります

私の最善の試み:

Cursor cursor = mDatabase.query(DatabaseOpenHelper.TABLE_ROOMS, mAllColumns,
    DatabaseOpenHelper.KEY_ROOM_HOSPITAL_ID
    + " =? AND " + DatabaseOpenHelper.KEY_ISO + " IS NOT NULL OR NOT ?",
    new String[]{String.valueOf(hospitalId), ""}, null, null, null);

これはすべてのレコードを返します。 ORの代わりにANDを使用すると、hospitalIdに一致するレコードが返されますが、NOT NULL OR NOT ""の部分は無視されます。

任意のヒント? rawQuery呼び出しを使用する必要がありますか?

16
cfrz

正しい構文は次のようになると思います:

AND key IS NOT NULL AND key != ""

ここで、keycolumnです

48
BladeCoder

列に複数のスペースを含めることができ、それらも空の値として扱いたい場合は、TRIMを使用します

column_name IS NOT NULL AND TRIM(column_name," ") != ""
0
Hugo Matilla