在dbaccess中使用空参数获取查询
Fetch query with null parameter in dbaccess
如果我有两个 dbobject,例如:
@interface Member : DBObject
@property (strong) NSString* firstname;
@property (strong) NSString* lastName;
@property (strong) Group* group;
@end
@interface Group : DBObject
@property (strong) NSString* groupName;
@property (strong) NSString* adminName;
- (DBResultSet*)members;
@end
在成员对象中,我可以检索与组相关的成员,但是在成员对象中,还有很多不包含组对象的对象。那我要怎么取呢?
我试过这个,但给出的是空的 DBResultSet。
[[[Member query] whereWithFormat:@"group == %@",NULL] fetch];
副词感谢
是的,在 SQLite 中您不能等同于 NULL,因此您使用稍微不同的表达式来处理 NULL 对象。您需要使用 IS NULL 或 IS NOT NULL.
简而言之,您上面的查询将变为:
[[[Member query] where:@"group IS NULL"] fetch];
有时它确实会弄乱使用参数构建查询,但在这种情况下,您只需要构建看起来有点不同的查询即可。
例如:
[[[Member query] whereWithFormat:@"(group == %@ OR group IS NULL)",@(123)] fetch];
谢谢
广告
如果我有两个 dbobject,例如:
@interface Member : DBObject
@property (strong) NSString* firstname;
@property (strong) NSString* lastName;
@property (strong) Group* group;
@end
@interface Group : DBObject
@property (strong) NSString* groupName;
@property (strong) NSString* adminName;
- (DBResultSet*)members;
@end
在成员对象中,我可以检索与组相关的成员,但是在成员对象中,还有很多不包含组对象的对象。那我要怎么取呢?
我试过这个,但给出的是空的 DBResultSet。
[[[Member query] whereWithFormat:@"group == %@",NULL] fetch];
副词感谢
是的,在 SQLite 中您不能等同于 NULL,因此您使用稍微不同的表达式来处理 NULL 对象。您需要使用 IS NULL 或 IS NOT NULL.
简而言之,您上面的查询将变为:
[[[Member query] where:@"group IS NULL"] fetch];
有时它确实会弄乱使用参数构建查询,但在这种情况下,您只需要构建看起来有点不同的查询即可。
例如:
[[[Member query] whereWithFormat:@"(group == %@ OR group IS NULL)",@(123)] fetch];
谢谢 广告