Fra*_*sco 5 sql sqlite android bit-manipulation where
我想知道在Android中是否可以这样做:
public Cursor getFlowsByCategory(int type, int categoryID, int limit) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
final String[] columns = {ID, FLAGS, SUBJECT, AMOUNT, AMOUNT_NO, CATEGORY};
final String selection = "((" + FLAGS + " & ?) >> 1 = ?) AND (" + CATEGORY + " = ?)";
final String[] selectionArgs = {Integer.toString(Flow.FLOW_TYPE), Integer.toString(type), Integer.toString(categoryID)};
return db.query(TABLE, columns, selection, selectionArgs, null, null, ID + " DESC", Integer.toString(limit));
}
Run Code Online (Sandbox Code Playgroud)
FLAGS是一个1字节的位掩码,我只想选择掩码的第二位(位置1)的行.掩码(Flow.FLOW_TYPE)是0b00000010,类型参数可以是0或1.它应该工作,但它没有:我做错了什么?
该query
函数仅接受字符串作为参数,但在SQLite中,数字和字符串永远不会相等(除非您具有类型亲和性,但这仅适用于列值,而不适用于表达式).
您必须将参数显式转换回数字:
((...) >> 1 = CAST(? AS INTEGER)) AND ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1490 次 |
最近记录: |