SQL:如果值可以为空,如何按值选择

m5seppal

我有一个数据库表“类别”,它可以有一个自我参考。如果自引用为空,则它是顶级类别(无父类别)。如果它指向另一个类别,则它是给定类别的子类别。

现在我正在尝试设置查询,该查询返回具有给定父类别 ID 的所有子类别。类似于以下内容(Android Room 语法):

"SELECT * FROM category WHERE parent_id = :parentId"

如果 parentId == null,则此查询不返回任何内容,但我希望它返回 parentId == null 的所有类别(即顶级类别)。带查询

"SELECT * FROM category WHERE parent_id IS NULL"

我可以成功获得父类别,但显然,它不适用于子类别。

我也尝试了以下查询

"SELECT * FROM category WHERE (parent_id IS NULL OR parent_id = :parentId)

但它当然失败了,因为它总是返回顶级类别,即使目的是只获得某些子类别。

我的问题是,如何设置查询以使其按预期工作,即在 parentId == null 时返回所有顶级类别,否则返回给定类别 ID 的所有子类别。

CL。

SQL 标准要求对 NULL 值进行这种处理。

但 SQLite 有一个扩展:你也可以使用 IS 和非 NULL 值:

SELECT * FROM category WHERE parent_id IS :parentId

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章