【问题标题】:SQLite query to select columns from table if a particular column value is NULL如果特定列值为 NULL,则 SQLite 查询从表中选择列
【发布时间】:2011-08-25 19:24:20
【问题描述】:

我有一个带有 1 个表和该表中的 4 列的 sqlite 数据库。这些列之一是可选的,并且可能包含 NULL 值。如果此列为空,我想获取其他 3 列中的值。

例如,

column 1    column 2    column 3    column4
a           b                       d
e           f           g           h
i           j                       l

我想在 sqlite 方面实现的是:

SELECT column1 WHERE column3 IS NULL;

由于 IS NULL 在 SQLite 中不起作用,我不知道如何实现这一点。我是一名 iOS 开发人员,几乎没有数据库知识。任何帮助将不胜感激。

UPDATE1:@rptwsthi 建议在第 3 列中包含默认值,这肯定会解决我的问题。但是,我认为在创建数据库时必须这样做,对吗?或者这可以通过其他方式完成吗?

UPDATE2:我确实参考了有关 IS NULL 和 IS NOT NULL 的 SQLite 文档。但只有 IS NOT NULL 返回值, IS NULL 不起作用。它甚至不会引发错误。

UPDATE3:当我没有值时,我在第 3 列中看到。我也在使用终端命令。所以我的代码是

SELECT column1 WHERE column3 IS NULL;

问候, 爱视

【问题讨论】:

  • 这是一个建议,为您的 column3 添加一个默认值并根据该值运行查询。
  • 根据 SQLite 主页上的this article,SQLite 确实支持IS NULLIS NOT NULL ... 是什么让你不这么认为?
  • 我在来这里之前确实参考了该链接,但遗憾的是,IS NULL 不起作用,只有 IS NOT NULL 才起作用。我在我的数据库和其他一些论坛中看到了这一点。
  • 你确定你的列真的是NULL而不是空字符串吗?
  • @omz 请参阅更新 3。它显示为 代替空列条目。所以我认为它是空的。

标签: iphone objective-c ios sqlite isnull


【解决方案1】:

来自SQLite documentation

IS 和 IS NOT 运算符的工作方式与 = 和 != 类似,除非其中一个或两个都使用 的操作数为 NULL。在这种情况下,如果两个操作数都是 NULL, 然后 IS 运算符计算为 1(真)和 IS NOT 运算符 计算结果为 0(假)。如果一个操作数为 NULL 而另一个不是, 然后 IS 运算符的计算结果为 0(假)并且 IS NOT 运算符为 1(正确)。

据此,IS NULL 在 SQLite 中应该可以正常工作。

【讨论】:

    【解决方案2】:

    SQLite 确实支持 IS NULL 功能

    你能给你在xcode中写查询的代码吗

    我在我的 sqllite 中尝试了 IS NULL,效果很好..

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 1970-01-01
      • 2019-12-02
      • 2023-03-03
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多